我是新的MVC編程與剃刀,我需要你的建議我的代碼有什麼問題。剃刀模型不返回項目列表到控制器
我有一個模型
public class OrderDetails : OrderList
{
public string CompanyId { get; set; }
public List<OrderItems> OrdItems { get; set; }
}
public class OrderItems
{
public int Id { get; set; }
public string StopAddressName { get; set; }
}
我有填充數據的控制器。
public ActionResult Edit()
{
OrderDetails ordDtl = new OrderDetails();
ordDtl.CompanyId = "1";
ordDtl.OrdItems = new List<OrderItems>();
for (int i = 1; i < 4; i++)
{
OrderItems tmp = new OrderItems();
tmp.Id = i;
tmp.StopAddressName = "Street " + i;
ordDtl.OrdItems.Add(tmp);
}
return View("EditOrder", ordDtl);
}
當我發送它來查看它顯示所有數據。這是我的觀點。
@model OrderDetails
@using (Html.BeginForm("Edit", "Orderlayouts", FormMethod.Post))
{
<fieldset><legend>OrderDetail</legend>
<div class="editor-label">
@Html.LabelFor(model => model.CompanyId)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.CompanyId)
</div>
<table>
<tr>
<td>id</td>
<td>Address</td>
</tr>
@foreach (var itm in Model.OrdItems)
{
<tr>
<td>@itm.Id</td>
<td>@itm.StopAddressName</td>
</tr>
}
</table>
<p>
<input type="submit" value="Edit" />
</p>
</fieldset>
}
當我點擊提交按鈕時,我在控制器CompanyID中,但OrdItems值變爲空。你能指出我的代碼出了什麼問題嗎? 這是我的控制器。
[HttpPost]
public ActionResult Edit(OrderDetails Orderdt)
{
return View("EditOrder", Orderdt);
}
任何建議將不勝感激。
除非我失去了一些東西在這裏主要的,它看起來像你的唯一形式字段是CompanyID - 所以沒有訂單明細對象獲取。 –
您必須將數據添加到隱藏字段,因爲mvc無法將數據解析到正確的對象中。 @ Html.HiddenFor(model => itm.Id) @ Html.HiddenFor(model => itm.StopAddressName) 這將序列化表單中的數據。 – Marko