Als ik je goed begrijp, heb je een lijst met attributen in je weergavemodel.
Dus als je ermee wilt werken, moet je het op de lijst plaatsen.
U moet dus uw weergavemodel wijzigen:
//I put all properties of your list to separate model
public class AttriduteViewModel
{
public int ProductColorVariantId { get; set; }
public int ProductSizeVariantId { get; set; }
public int ProductSizeVariantValueId { get; set; }
public int ProductAttributeId { get; set; }
public int ProductAttributeValueId { get; set; }
public int? Quantity { get; set; }
}
public class ProductAttributesViewModel
{
public Product Product { get; set; }
public ProductAttribute ProductAttribute { get; set; }
public ProductAttributeValue ProductAttributeValue { get; set; }
public int ProductId { get; set; }
public string Name { get; set; }
[AllowHtml]
public string Description { get; set; }
public decimal? Price { get; set; }
public string Sizes { get; set; }
public int Stock { get; set; }
//note this line
public List<AttriduteViewModel> AdditionalAttridutes {get; set;}
}
Dat is eigenlijk alles. Nu moet u alleen rechtsbinding maken voor uw AdditionalAttridutes
. Het zal gemakkelijker zijn om het te maken met HtmlHelpers
zoals Html.DropDownListFor
, Html.HiddenFor
en Html.TextBoxFor
. Ik kan het gewoon niet zien in je weergave.
Het punt is dat je je input
. maakt s met Helpers krijgen ze de juiste name
Kenmerk en uw model zullen correct binden op POST .
Een ander ding waarmee u te maken krijgt, is het dynamisch maken van nieuwe items zoals in uw voorbeeld. U moet nadenken over het juiste naamattribuut. Ik raad je aan om dit geweldige antwoord te controleren over dat probleem.