带有html帮助器的for语句中的错误

时间:2014-06-03 07:50:34

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor

我使用以下代码并收到错误

@for (var i = 0; i < Model.Count(); i++)
{
    <tr>
       if (Model[i].Id == ViewBag.SelectedID)
       {
           <td>
               @Html.EditorFor(m => m[i].name)
           </td>
           <td>
               @Html.EditorFor(m=> m[i]checkBox1)
           </td>
           ............
       }
    </tr>
}

错误在

@Html.EditorFor(m => m[i].name) 

@Html.EditorFor(m=> m[i]checkBox1)

错误

try specifying the arguments explicitly。可能是什么问题?

更新

我也尝试以下但是我在复选框中出错,如何解决?

  @foreach (var item in Model)
        {
            <tr>
                @if (item.Id == ViewBag.SelectedID)
                {
                    <td>
                        @Html.TextBox(item.name)
                    </td>
                    <td>
                        @Html.EditorFor(item.checkBox1)
                    </td>


                    <td>
                        <button type="submit" name="submit" value="save">Save</button>
                        <button type="submit" name="submit" value="cancel">Cancel</button>
                    </td>
                }

错误: @ Html.EditorFor(item.checkBox1)

我尝试将其更改为@ Html.TextBox(item.checkBox1)或@ Html.CheckBoxFor(item.checkBox1) 并且错误仍然存​​在,任何想法如何管理?

1 个答案:

答案 0 :(得分:0)

不要使用For循环,只需尝试foreach并显示每个项目。

例如:

@foreach (var item in Model)
 {
  <tr>
   <td>
     @Html.TextBox(item.name)
   </td>
  </tr>
}

修改

@foreach (var item in Model)
        {
            <tr>
                @if (item.Id == ViewBag.SelectedID)
                {
                    <td>
                        @Html.TextBox(item.name)
                    </td>
                    <td>
                        @Html.CheckBox(item.checkBox1)
                    </td>


                    <td>
                        <button type="submit" name="submit" value="save">Save</button>
                        <button type="submit" name="submit" value="cancel">Cancel</button>
                    </td>
                }