【发布时间】:2017-03-27 06:52:20
【问题描述】:
背景
我正在构建一个相当简单的库存和订单管理系统。在所有此类系统中,您最终会到达订单(在我的情况下为 PurchaseOrder)具有订单行项目列表(在我的应用程序中称为 LineItem)的位置。
后端代码
目前,我的 ViewModels 直接映射到我的实体,所以我的 PurchaseOrderVm 看起来像这样:
public class PurchaseOrderVm
{
public PurchaseOrderVm()
{
LineItems = new List<LineItemVm>();
}
public int Id { get; set; }
public DateTime Date { get; set; }
public PurchaseOrderStatus Status { get; set; }
[Display(Name = "Shipping Cost")]
public decimal ShippingCost { get; set; }
[Display(Name = "Import VAT")]
public decimal Vat { get; set; }
[Display(Name = "Import Duty")]
public decimal ImportDuty { get; set; }
[Display(Name = "Supplier Id")]
public string SupplierId { get; set; }
[Display(Name = "Supplier")]
public string SupplierName { get; set; }
public IEnumerable<LineItemVm> LineItems { get; set; }
public List<SelectListItem> Suppliers { get; set; }
public string ButtonText => Id != 0 ? "Update Purchase Order" : "Add Purchase Order";
}
而我的LineItemVm 看起来像这样:
public class LineItemVm
{
public int Id { get; set; }
public int Quantity { get; set; }
public int OrderId { get; set; }
[Display(Name = "Product")]
public int ProductId { get; set; }
}
前端/用户体验
我知道我想要构建的体验类型,但我不确定自 MVC3 以来在这方面有多少进展。我想构建这个(强调重要性的位):
试过
只有通过这样做,我才能为单个 LineItem 工作:
<input class="form-control " id="ProductId" name="LineItems[0].ProductId" type="number" value="">
但显然这与动态相反。允许用户根据需要添加和删除项目并让表单和模型绑定器仍然有效的最简洁的方法是什么?
【问题讨论】:
-
你可以查看这个关于收藏的链接。 c-sharpcorner.com/uploadfile/pmfawas/… 你要做什么 ` for (int i = 0; i Model.LineItems[i].ProductId) } `
-
你用的是哪个前端框架??
-
暂时没有,我希望只是香草 JS?
-
一些选项请参考this answer
-
你好慈湾。您是如何获得以下广泛而有用的答案的?对你有帮助吗?
标签: javascript c# asp.net-mvc asp.net-mvc-5