鉴于MVC应用程序无法遍历List <someclass>

时间:2019-08-02 10:10:04

标签: asp.net-mvc razor model

我认为模型是课程列表。我试图遍历列表以将数据绑定到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属性会变形?

1 个答案:

答案 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>

希望这能解决您的问题。