HintergrundFähigkeit Kind Listenelemente Ansichtsmodell dynamisch
Ich baue ein ziemlich einfach Inventar und Order Management System hinzuzufügen. In all diesen Systemen gelangen Sie schließlich zu dem Bit, wo ein Auftrag (PurchaseOrder
in meinem Fall) eine Liste von Auftragspositionen (in meiner Anwendung LineItem
genannt) hat.
Backend-Code
Vorerst meine Viewmodels Karte direkt an meine Entities, und so meine PurchaseOrderVm
sieht wie folgt aus:
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";
}
Und mein LineItemVm
sieht wie folgt aus:
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; }
}
Frontend/UX
Ich kenne die Art von Erfahrung, die ich bauen möchte, aber ich bin mir nicht sicher, wie viel Dinge mit diesem Aspekt seit MVC3 weitergegangen sind. Ich möchte dies bauen (Bits für Bedeutung hervorgehoben):
Versuchte
konnte ich diese Arbeit für einen einzelnen LineItem
nur dies tun bekommen:
<input class="form-control " id="ProductId" name="LineItems[0].ProductId" type="number" value="">
Aber das ist offensichtlich das Gegenteil von Dynamik. Was ist der sauberste Weg, um Benutzern das Hinzufügen und Entfernen von Elementen zu erlauben, wie sie es wünschen und das Formular und das Modellbinder immer noch funktionieren?
Sie können diesen Link über Sammlungen überprüfen. http://www.c-sharpcorner.com/uploadfile/pmfawas/asp-net-mvc-how-to-post-a-collection/ Was werden Sie tun? für (int i = 0; i Modell.LineItems [i] .ProductId) } ' –
Miguel
Welches Front-End-Framework verwenden Sie? –
Keiner im Moment, ich hoffte nur Vanille JS? – Ciwan