在“视图模型列表对象”中填充值

时间:2014-05-17 10:35:24

标签: asp.net-mvc-4

我遇到一个问题,我无法在我的视图中将用户填充的值填充到ViewModel中定义的List。

我有查看某些字段的位置将手动填写为:

S.No   StyleName    JobType    Quantity
1      ABC          Repair     2
2      XYZ          Wash       3

我的ViewModel如下:

    public class IssueViewModel
    {          
        public List<OrderItem> Items { get; set; }              
    }

我的OrderItem定义如下

    public class OrderItem
    {
        public int OrderItemId { get; set; }
        public string StyleName { get; set; }
        public string JobType{ get; set; }
        public int Quantity { get; set; }

    }

现在问题是如何将此ViewModel列表链接到View以将我的Items列表中的值保存到DB中。

如果我为StyleName,JobType和Quantity定义单独的列表,它的工作正常。在这种情况下,我的观点如下:

<table id="theTable">
  <tr>
    <th>Sr.No</th>
    <th>Style Name</th>
    <th>JobType</th>
    <th>Quantity</th>
  </tr>
  <tr>
    <td>1</td>
    <td>
          @Html.TextBoxFor(model => model.StyleName)
            @*<input type = "text" style="border:0px;" value = "" />*@
    </td>         
    <td>
          @Html.TextBoxFor(model => model.JobType)
           @*<input type = "text" style="border:0px;" value = "" />*@
    </td>
    <td>
          @Html.TextBoxFor(model => model.Quantity)
            @*<input type = "text" style="border:0px;" value = "" />*@
    </td>    
  </tr>
</table>         

如果我在上面使用,我必须阅读3个不同的循环来获取值。我明白这不是正确的做法。

我知道显示我们使用for循环,但在这里我需要接受用户填充的值。我搜索了很多,但没有找到任何解决方案。请指教。感谢

1 个答案:

答案 0 :(得分:0)

OrderItem创建一个编辑器模板,其中每个属性都有文本框,然后在主视图中,只需使用Html.EditorForModel(),它将根据每个属性的编辑器模板生成标记。模型,如果属性是列表,那么对于该列表中的每个项目。您无需在任何地方手动循环任何内容。