Hvis jeg forstår dig korrekt, har du en liste over attributter i din visningsmodel.
Så hvis du vil arbejde med det, skal du placere det på listen.
Så du bør ændre din visningsmodel:
//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;}
}
Det er stort set alt. Nu skal du kun lave den rigtige binding for dine AdditionalAttridutes
. Det bliver nemmere at lave det med HtmlHelpers
som Html.DropDownListFor
, Html.HiddenFor
og Html.TextBoxFor
. Jeg kan bare ikke se det i din visning.
Sagen er, hvis du opretter dit input
s med Hjælpere får de det rigtige name
Attribut og din model bindes korrekt på POST .
En anden ting, du vil stå over for, er dynamisk at oprette nye elementer som i dit eksempel. Du bør tænke på den rigtige navneegenskab. Jeg råder dig til at tjekke dette gode svar om det problem.