Jeśli rozumiem, że masz rację, masz listę atrybutów w swoim modelu widoku.
Więc jeśli chcesz z nim pracować, powinieneś umieścić go na liście.
Powinieneś więc zmienić swój model widoku:
//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;}
}
To w zasadzie wszystko. Teraz powinieneś zrobić tylko prawidłowe wiązanie dla swoich AdditionalAttridutes
. Łatwiej będzie to zrobić z HtmlHelpers
jak Html.DropDownListFor
, Html.HiddenFor
i Html.TextBoxFor
. Po prostu nie widzę tego w Twoim widoku.
Chodzi o to, jeśli utworzysz swój input
s z pomocnikami uzyskają prawo name
Atrybut i model zostaną prawidłowo powiązane w POST .
Kolejną rzeczą, z którą będziesz musiał się zmierzyć, jest dynamiczne tworzenie nowych przedmiotów, tak jak w twoim przykładzie. Powinieneś pomyśleć o właściwym atrybucie nazwy. Radzę sprawdzić tę świetną odpowiedź o tym problemie.