首页 > 解决方案 > foreach 迭代循环中的 Viewcomponent 不断返回相同的数据

问题描述

我正在 MVC 网络核心应用程序中创建一个网页,用户可以在其中向他们的房间添加家具。该页面使用 foreach 循环来制作包含视图组件的引导导航药丸。视图组件按家具类型(Furniture 模型中的枚举)过滤,以返回该指定类型的家具的简单列表

 <ul class="nav nav-pills">
    @foreach (Furniture.FurnitureType FurType in (Namjestaj.FurnitureType [])Enum.GetValues(typeof(Furniture.FurnitureType )))
    {
        <li><a data-toggle="pill" href="#@(FurType )">@(FurType )</a></li>
    }
</ul>
  @foreach  (Furniture.FurnitureType FurType in (Namjestaj.FurnitureType [])Enum.GetValues(typeof(Furniture.FurnitureType )))
    {
        <div id="@(FurnitureType )" class="tab-pane fade">
            <p>@(FurnitureType )</p>         
                @await Component.InvokeAsync("RoomFurniture", new { id = Model.Id, FurnitureType= FurType , free= true })            
         </div>
    } 

//查看组件代码

public IViewComponentResult Invoke(int id, Furniture.FurnitureType typ, bool free)
{
   List<Furniture> furniture= db.Furniture.Where(x => x.FurnitureType == typ).ToList();  
   return View("RoomFurniture", furniture);
}

视图组件返回结果,但它始终返回相同的结果。在所有家具类型(“沙发”、“床”、“桌子”...)中,它只返回每个导航药丸中的床。我什至尝试硬编码一种不同的类型,但只返回床位。在调试器内部,foreach 循环正确迭代,在 razor 页面内部,Viewcoponent 获得正确的枚举值,但 invokeAsync 函数仍保持设置在“床”上。

标签: c#model-view-controllerasp.net-coreasp.net-core-viewcomponent

解决方案


您的枚举结果未正确映射Furniture.FurnitureType,这就是它始终返回第一个枚举值的原因。


推荐阅读