无法将集合项从View绑定到Controller:

时间:2017-03-15 13:45:13

标签: c# linq-to-sql asp.net-mvc-5

我有一个ProductViewModel,其中每个产品都有多个图像,Bullet_Points。我能够显示要编辑的数据函数但是将数据捕获回POST编辑方法几乎没有逻辑。

@model OMS.ViewModels.ProductVm2
@using(Html.BeginForm()) {
  @Html.AntiForgeryToken() < h4 > ProductVM < /h4> < hr / >
   < div class = "form-horizontal" >


  @Html.HiddenFor(m => m.Product.ProductID)


       @foreach (var img in Model.Images)
    {
    <div class="form-group">
       @Html.LabelFor(modelItem => img.Image_URL, htmlAttributes: new { @class = "control-label col-md-2" })
       <div class="col-md-10">
          @Html.EditorFor(modelItem => img.Image_URL, new { htmlAttributes = new { @class = "form-control" } })
          @Html.ValidationMessageFor(@modelItem => img.Image_URL, "", new { @class = "text-danger" })
       </div>
    </div>
    }

如何将图像集合捕获到控制器[HTTPPOST]编辑方法。因为方法应该迭代图像模型。我能够在没有问题的情况下捕获其他模型数据。

public ActionResult Edit(FormCollection form, ProductVm2 VM) {

    Product product = new Product() { //Supplier_ID = VM.Product.Supplier_ID, 
     Name = VM.Product.Name, Description = VM.Product.Description, Product_Code = VM.Product.Product_Code,
      ProductID = VM.Product.ProductID
    };

//Images
List<Image> Images = new List<Image>();

 Images.Add( ......)

}

此外,当我试图检查从View发送到Controller的对象时。即使我已将数据传入其中,我也看到Image对象为空。

enter image description here

1 个答案:

答案 0 :(得分:0)

你不能真正使用foreach并且有这个工作,默认模型绑定器想要集合索引语法正确地创建可绑定元素ids .....

而不是

$ionicHistory.forwardView()

使用此

@foreach (var img in Model.Images)
{
<div class="form-group">
   @Html.LabelFor(modelItem => img.Image_URL, htmlAttributes: new { @class = "control-label col-md-2" })
   <div class="col-md-10">
      @Html.EditorFor(modelItem => img.Image_URL, new { htmlAttributes = new { @class = "form-control" } })
      @Html.ValidationMessageFor(@modelItem => img.Image_URL, "", new { @class = "text-danger" })
   </div>
</div>
}