0

我有 ViewModel 和 Model 如下

public class MyViewModel
    {  
        public List<MyModel> MyItems { get; set; }
        /* There are many other properties*/
    }

    public class MyModel
    {
        public string  MyType { get; set; }
        public decimal value1 { get; set; }
        public decimal value2 { get; set; }
    }

我正在绑定剃刀视图,如下所示。对于第 1 列,我可以只显示字符串。对于第 2 列和第 3 列,我需要显示包含模型数据的文本框。

 <table >
    <thead>
      <tr>
        <th>My Column1</th>
        <th>My Column2</th>
        <th>My Column3</th>
      </tr>
      </thead>
        <tbody>
         @foreach (var myItem in Model.MyItems)
            {
              <tr>
                <td>
                   @myItem.MyType
                </td>
               <td>@Html.TextBoxFor( ??? )</td>
     <td></td>
              </tr>
              }
          </tbody>
 </table>

在正常情况下,我看到我们可以像@Html.TextBoxFor(m => m.myvalue1) 那样做。但是在上述情况下如何做到这一点。请建议。

4

2 回答 2

2

Razor 中的 HtmlHelpers 通过索引器效果更好。你所要做的:

@for (var i = 0; i < Model.MyItems.Count; ++i)
{
    <tr>
        <td>@Model.MyItems[i]</td>
        <td>@Html.TextBoxFor(m => m.MyItems[i])</td>
        <td></td>
    </tr>
}
于 2013-07-12T13:45:10.167 回答
1

您已经在@foreach循环中解析您的列表,所以您只需要<td>@Html.TextBoxFor(myItem.value1)</td>

于 2013-07-13T04:36:00.143 回答