使用HttpPost传递IEnumerable或将Model列表到Controller

我有这个问题:

我的模特

public class SpesaTrasportoView { public int SPESATRASPORTOVIEW_ID; public decimal PREZZO; public string DESCRIZIONE; } public class SpeseTrasportoView { public List SpeseTrasportoModello { get; set; } //public IList Spese { get; set; } } 

我的看法

 @model MvcCart.Models.SpeseTrasportoView @{ ViewBag.Title = "Spese Trasporto"; int counter = 0; } 

Spese Trasporto

Modifica e gestisci gli importi delle spese di trasporto.

@using (Html.BeginForm()) {
Informazione Spese Trasporto @for (int i = 0; i < Model.SpeseTrasportoModello.Count; i++) {
@Html.TextBoxFor(m => m.SpeseTrasportoModello.ToList()[i].PREZZO)
}

}

我的控制器

 [HttpPost] public ActionResult SpeseTrasporto(SpeseTrasportoView model) { //model.SpeseTrasportoModello is ever NULL :((((( return View(); } 

当我提交model.SpeseTrasportoModello为空! 为什么mvc3不绑定数据????

您需要解决一些问题。 首先为您的模型,制作一切属性。 不要使用字段。

楷模:

 public class SpesaTrasportoView { public int SPESATRASPORTOVIEW_ID { get; set; } public decimal PREZZO { get; set; } public string DESCRIZIONE { get; set; } } public class SpeseTrasportoView { public List SpeseTrasportoModello { get; set; } } 

现在,在视图中更改for循环,使其如下所示:

 @for (int i = 0; i < Model.SpeseTrasportoModello.Count; i++) { var item = Model.SpeseTrasportoModello[i]; 
}

您需要知道的关键是输入名称格式。 它应该具有模型内部属性的名称(列表),方括号中包含索引,然后是此输入所用属性的名称(例如PREZZO)。