c# - 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 函数仍保持设置在“床”上。
解决方案
您的枚举结果未正确映射Furniture.FurnitureType
,这就是它始终返回第一个枚举值的原因。
推荐阅读
- javascript - 单击文件输入时如何禁止打开对话框?
- java - 如何一次只运行一次函数
- javascript - 找不到 javascript 文件
- asp.net-core - 如何修改无效的请求标头
- firebase - 我可以使用 Firebase“应用内购买”事件安全地处理购买吗
- javascript - Javascript for 循环意外停止?
- elasticsearch - Istio fluentd 适配器以字节形式发送 IP 地址
- excel - 将函数 MaxRange 与混合字符(字母和数字)一起使用
- android - Unity Build to Android Phone 并不“干净”
- c - 具有目标状态的深度优先搜索