foreach 循环与 ViewData.TemplateInfo.HtmlFieldPrefix 和 @Html.Ed
本文关键字:@Html Ed HtmlFieldPrefix TemplateInfo 循环 ViewData foreach | 更新日期: 2023-09-27 17:56:45
这是我查看页面 ABCD.cshtml 中的代码
foreach (var category in categories)
{
@Html.EditorFor(m => m.UserPreferences, new { index})
}
这是我的视图共享编辑器模板中的代码 MyViewModelTemplate.cshtml
@using My.MVC.Models.UserPreference
@model MyViewModelTemplate
@{
var htmlPrefix = ViewData.TemplateInfo.HtmlFieldPrefix;
}
Prefix: @Html.Raw(htmlPrefix)<Br/>
在 html 前缀中,我不断获得 UserPreferences[0],而不是 foreach 集合中的每个项目都有一个,例如 UserPreferences[0]、UserPreferences[1]、UserPreferences[2]、...等等等等。
由于我只为每个控件获取 UserPreferences[0],因此它按如下方式呈现所有控件
<input name=UserPreferences[0].MyField ....> <---- My Problem
而不是
<input name=UserPreferences_0_.MyField ....>
<input name=UserPreferences_1_.MyField ....>
<input name=UserPreferences_2_.MyField ....>
我需要在 ABCD.cshtml 中的 foreach 循环中做什么,以便我可以在 ViewData.TemplateInfo.HtmlFieldPrefix 中获得适当的控件,例如 UserPreferences[0]、UserPreferences[1]、UserPreferences[2],并按如下方式呈现控件:
<input name=UserPreferences_0_.MyField ....>
<input name=UserPreferences_1_.MyField ....>
<input name=UserPreferences_2_.MyField ....>
尝试类似于可能不正确的变量。
for(i = 0; i< category.length; i++;)
{
@Html.EditorFor(m => m.UserPreferences[i], new { index})
}