Pokud chápu, že máte pravdu, máte ve svém modelu zobrazení seznam atributů.
Takže pokud s ním chcete pracovat, měli byste ho umístit do seznamu.
Měli byste tedy změnit svůj model zobrazení:
//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 je v podstatě vše. Nyní byste měli vytvořit správnou vazbu pouze pro vaše AdditionalAttridutes
. Bude snazší to udělat pomocí HtmlHelpers
jako Html.DropDownListFor
, Html.HiddenFor
a Html.TextBoxFor
. Jen to nevidím ve vašem zobrazení.
Jde o to, pokud vytvoříte input
s Pomocníky dostanou správné name
Atribut a váš model se správně spojí při POST .
Další věc, se kterou se setkáte, je dynamicky vytvářet nové položky jako ve vašem příkladu. Měli byste přemýšlet o správném atributu jména. Doporučuji vám zkontrolovat tuto skvělou odpověď o tomto problému.