Wenn ich Sie richtig verstanden habe, haben Sie eine Liste von Attributen in Ihrem Ansichtsmodell.
Wenn Sie also damit arbeiten möchten, sollten Sie es auf die Liste setzen.
Sie sollten also Ihr Ansichtsmodell ändern:
//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;}
}
Das ist im Grunde alles. Jetzt sollten Sie nur noch die richtige Bindung für Ihre AdditionalAttridutes
vornehmen . Es wird einfacher sein, es mit HtmlHelpers
zu machen wie Html.DropDownListFor
, Html.HiddenFor
und Html.TextBoxFor
. Ich kann es einfach nicht in Ihrer Ansicht sehen.
Die Sache ist, wenn Sie Ihre input
erstellen s mit Helfern bekommen sie den richtigen name
Attribut und Ihr Modell werden beim POST korrekt gebunden .
Eine andere Sache, mit der Sie konfrontiert werden, ist das dynamische Erstellen neuer Elemente wie in Ihrem Beispiel. Sie sollten über das richtige Namensattribut nachdenken. Ich rate Ihnen, diese großartige Antwort zu überprüfen zu diesem Problem.