c# - 在嵌套循环中使用 asp-for 进行数据绑定
问题描述
我的网站上有几个带有输入列表的块
<div id="MainClaimsBlock">
@await Html.PartialAsync("UserClaimsBlock", Model.FirstClaimModel)
@await Html.PartialAsync("UserClaimsBlock", Model.SecondClaimModel)
@await Html.PartialAsync("UserClaimsBlock", Model.ThirdClaimModel)
@await Html.PartialAsync("UserClaimsBlock", Model.FourthClaimModel)
</div>
在每个局部视图中,我都有类似的东西(原始 100 多行。)
for (var i = 0; i < Model.Length; i++)
{
<div class="custom-control custom-switch">
<input type="checkbox" asp-for="@Model.Categories[i].Selected">
<label asp-for="@Model.Categories[i].Selected">@Model.Categories[i].Name</label>
</div>
}
问题是我无法保存这些部分视图中的值,因为asp-for提供了重复的 id 和部分视图中列表的属性。
id="Model_SubCategories_6__Selected"
您如何区分一个局部视图的 Id 与另一个?
解决方案
哇,从Chris Pratt的问题中很快找到了解决方案
解决方案是在调用局部视图之前使用 ViewDataDictionary
@{
var myViewData = new ViewDataDictionary(ViewData);
myViewData.TemplateInfo.HtmlFieldPrefix = "Claims";
}
@await Html.PartialAsync("UserClaimsBlock", Model.SecondClaimModel, myViewData)
之后 asp-for 标记基于此前缀返回 id
id="Claims_Categories_2__Selected"
推荐阅读
- python - 当用户在模态窗口外单击时如何响铃?
- deep-learning - TensorFlow CNN 形状不匹配
- java - 转换表 HTML/PHP/Java
- javascript - JavaScript 模拟时钟
- python - 以有效的方式自定义正则表达式查询
- reactjs - 如何使用 Material UI TextField 将 className 添加到子元素
- javascript - 哪个性能更好?直接从函数访问全局变量还是将其分配给另一个变量?
- java - 系统的Active Memory不断增加
- windows - 批处理脚本多选菜单
- c - 如何为自己的数据结构使用可变参数?