我有我的视图模型:
public class POReceiptviewmodel { public virtual int PONumber { get; set; } public virtual string vendorCode { get; set; } public virtual IList<POReceiptItemviewmodel> POReceiptItems { get; set; } public POReceiptviewmodel() { POReceiptItems = new List<POReceiptItemviewmodel>(); } } public class POReceiptItemviewmodel { public virtual string ItemCode { get; set; } public virtual string ItemDesription { get; set; } public virtual decimal OrderedQuantity { get; set; } public virtual decimal ReceivedQuantity { get; set; } public virtual DateTime ReceivedDate { get; set; } public POReceiptItemviewmodel() { ReceivedDate = DateTime.Now; } }
public ActionResult CreatePOReceipt(int poNumber) { PurchaSEOrder po = PurchasingService.GetPurchaSEOrder(poNumber); POReceiptviewmodel poReceiptviewmodel = ModelBuilder.POToPOReceiptviewmodel(po); return View("CreatePOReceipt",poReceiptviewmodel); } [HttpPost] public ActionResult CreatePOReceipt(POReceiptviewmodel poReceiptviewmodel) { // Here the problem goes. The items in the poReceiptviewmodel.POReceiptItems has lost. the count became zero. return View("Index"); }
在我的视图中,我可以正确显示模型并使用@ Html.HiddenFor<>我可以按照自己的意愿坚持查看模型数据.但不在列表<>导航属性.
@model POReceiptviewmodel @using (Html.BeginForm()) { <fieldset> <legend>Purchase Order</legend> <label>For PO # :</label> @Html.HiddenFor(m => m.PONumber) @Html.displayTextFor(m => m.PONumber) <label>vendor Code :</label> @Html.HiddenFor(m => m.vendorCode) @Html.displayTextFor(m => m.vendorCode) </fieldset> <fieldset> <legend>Received Items</legend> <table class="tbl" id="tbl"> <thead> <tr> <th>Item Code</th><th>Item Description</th><th>OrderedQuantity</th><th>Received Quantity</th><th>Received Date</th> </tr> </thead> <tbody> @Html.HiddenFor(m => m.POReceiptItems) // I'm not really sure if this is valid @if (Model.POReceiptItems.Count > 0) { foreach (var item in Model.POReceiptItems) { <tr> <td>@Html.displayTextFor(i => item.ItemCode)</td>@Html.HiddenFor(i => item.ItemCode) <td>@Html.displayTextFor(i => item.ItemDesription)</td>@Html.HiddenFor(i => item.ItemDesription) <td>@Html.displayTextFor(i => item.OrderedQuantity)</td>@Html.HiddenFor(i => item.OrderedQuantity) <td>@Html.TextBoxFor(i => item.ReceivedQuantity)</td> <td>@Html.TextBoxFor(i => item.ReceivedDate)</td> </tr> } } </tbody> </table> </fieldset> <input type="submit" name="Received" value="Received" /> }
问题:
表单提交时POReceiptItems丢失.我尽可能不想使用TempData [“POReceiptItems”] = Model.POReceiptItems,但即使我使用它,输入ReceivedQuantity和ReceivedDate的值也不会保存到TempData中.
提前致谢!
解决方法
尝试
@for (int i = 0; i < Model.POReceiptItems.Count(); i++) { <tr> <td>@Html.displayTextFor(m => m.POReceiptItems[i].ItemCode)</td>@Html.HiddenFor(m => m.POReceiptItems[i].ItemCode) <td>@Html.displayTextFor(m => m.POReceiptItems[i].ItemDesription)</td>@Html.HiddenFor(m => m.POReceiptItems.ItemDesription) <td>@Html.displayTextFor(m => m.POReceiptItems[i].OrderedQuantity)</td>@Html.HiddenFor(m => m.POReceiptItems[i].OrderedQuantity) <td>@Html.TextBoxFor(m => m.POReceiptItems[i].ReceivedQuantity)</td> <td>@Html.TextBoxFor(m => m.POReceiptItems[i].ReceivedDate)</td> </tr> }
另请阅读此blog post以了解模型绑定到列表的工作原理
原文地址:https://www.jb51.cc/aspnet/248654.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。