Se ho capito che hai corretto, hai un elenco di attributi nel tuo modello di visualizzazione.
Quindi, se vuoi lavorarci, dovresti inserirlo nell'elenco.
Quindi dovresti cambiare il tuo modello di visualizzazione:
//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;}
}
Questo è praticamente tutto. Ora dovresti eseguire il binding corretto solo per i tuoi AdditionalAttridutes
. Sarà più facile farlo con HtmlHelpers
come Html.DropDownListFor
, Html.HiddenFor
e Html.TextBoxFor
. Non riesco a vederlo nella tua vista.
Il problema è se crei il tuo input
s con gli aiutanti otterranno il giusto name
L'attributo e il tuo modello si legheranno correttamente su POST .
Un'altra cosa che dovrai affrontare è creare dinamicamente nuovi oggetti come nel tuo esempio. Dovresti pensare all'attributo del nome giusto. Ti consiglio di controllare questa ottima risposta su quel problema.