在Razor视图中将模型绑定到文本框

时间:2013-07-12 13:41:54

标签: c# asp.net-mvc-3

我有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 =&gt; m.myvalue1)那样做。但在上述情况下如何做到这一点。请建议。

2 个答案:

答案 0 :(得分: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>
}

答案 1 :(得分:1)

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