【问题标题】:Binding Model to Text box in Razor view在 Razor 视图中将模型绑定到文本框
【发布时间】:2013-07-12 13:41:54
【问题描述】:

我有 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) 那样做。但是在上述情况下如何做到这一点。请提出建议。

【问题讨论】:

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


    【解决方案1】:

    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>
    }
    

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多