我认为模型是课程列表。我试图遍历列表以将数据绑定到html.hiddenfor。但是数据无法按预期呈现。
@model List<MyApp.Tag.Sample_Tag>
<div class="form-group">
@if (Model.Count > 0)
{
for (int i = 0; i < Model.Count; i++)
{
@Html.HiddenFor(m => m[i].is_selected, new {@id="hdnClientRoleChk-"+@Model[i].tag_id})
}
}
</div>
检查页面时,我会看到类似的东西
<input id="hdnClientRoleChk-4" name="[4].is_selected" type="hidden" value="False">
为什么渲染后name属性会变形?
答案 0 :(得分:2)
Asp.Net剃刀视图不允许用户使用Helper标记中的表达式。
无需编写额外的代码。您可以使用简单的foreach
来获得相同的结果。
@model List<MyApp.Tag.Sample_Tag>
<div class="form-group">
@foreach(var item in Model)
{
@Html.HiddenFor(modelItem=>item.is_selected, new {@id="hdnClientRoleChk-"+item.tag_id})
}
</div>
如果您确实需要使用for
循环,则可以使用此代码。
@model List<MyApp.Tag.Sample_Tag>
<div class="form-group">
@if (Model.Count > 0)
{
@for (int i = 0; i < Model.Count; i++)
{
var is_selected = Model[i].is_selected;
var tag_id = Model[i].tag_id;
@Html.Hidden("is_selected", is_selected, new { @id="hdnClientRoleChk-"+tag_id})
}
}
</div>
希望这能解决您的问题。