我有一个视图,在里面我正在生成一个列表,但是我没有能够成功地将它传递给控制器而没有字段为null:
我的观点代码:
@using (Html.BeginForm("AddFOP","Revenue",null,FormMethod.Post,new { enctype = "multipart/form-data" })) { <table class="grid" style="margin-top: 15px"> <thead> <tr> <th>FOP</th> <th>ORGN</th> <th>PROGRAM</th> <th>PERCENTAGE</th> <th></th> </tr> </thead> <tbody> @for (int i = 0; i < Model.editBillingFOPList.Count;i++ ) { <tr> <td>@Html.TextBox("FOPList[" + @i + "].Fund",Model.editBillingFOPList[i].Fund)</td> <td>@Html.TextBox("FOPList[" + @i + "].ORGN",Model.editBillingFOPList[i].ORGN)</td> <td>@Html.TextBox("FOPList[" + @i + "].Program",Model.editBillingFOPList[i].Program)</td> <td>@Html.TextBox("FOPList[" + @i + "].Percentage",Model.editBillingFOPList[i].Percentage)</td> </tr>
这是控制器:
[HttpPost] public ActionResult AddFOP(List<BillingFOPModel> FOPList) { return View(); }
我的FOPList显示计数为1,如果我在调试模式下展开它,它会显示模型列表但是具有空值 – 任何想法?
我的型号:
public class BillingFOPModel { public string BillingArea; public string BillingAreaName; public string Fund; public string ORGN; public string Program; public string Percentage; }
这是我的viewmodel:
public class EditBillingviewmodel { //declare attributes public List<BillingFOPModel> editBillingFOPList { get; set; } public string newBillingArea { get; set; } public string newBillingAreaName { get; set; } public string newFund { get; set; } public string newORGN { get; set; } public string newProgram { get; set; } public string newPercentage { get; set; } public EditBillingviewmodel() { } //constructor that passes a list and 2 strings public EditBillingviewmodel(List<BillingFOPModel> editBillingFOPList,string newBillingArea,string newBillingAreaName) { this.editBillingFOPList = editBillingFOPList; this.newBillingArea = newBillingArea; this.newBillingAreaName = newBillingAreaName; }
解决方法
你犯的是mvc的新开发者大多数做的同样的错误,你的模型有字段而不是属性,这就是你没有发布数据的原因.
将字段更改为Model类中的属性:
public class BillingFOPModel { public string BillingArea {get; set; } public string BillingAreaName { get; set;} public string Fund { get; set;} public string ORGN { get; set;} public string Program {get; set;} public string Percentage {get; set;} }
边注:
尽可能使用强类型的助手,如TextBoxFor(),DropDownListFor().