以下是我的视图页面ABCD.cshtml中的代码
foreach (var category in categories)
{
@Html.EditorFor(m => m.UserPreferences, new { index})
}
以下是我的View-Shared-EditorTemplates中的代码MyViewModelTemplate.cshtml
@using My.MVC.Models.UserPreference
@model MyViewModelTemplate
@{
var htmlPrefix = ViewData.TemplateInfo.HtmlFieldPrefix;
}
Prefix: @Html.Raw(htmlPrefix)<Br/>
在htmlPrefix中,我不断获取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 ....>
答案 0 :(得分:0)
尝试类似的东西可能不是正确的变量。
for(i = 0; i< category.length; i++;)
{
@Html.EditorFor(m => m.UserPreferences[i], new { index})
}