Se eu entendi que você está correto, você tem uma lista de atributos em seu modelo de visualização.
Então, se você quiser trabalhar com ele, você deve colocá-lo na lista.
Então você deve alterar seu modelo de visualização:
//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;}
}
Isso é basicamente tudo. Agora você deve apenas fazer a vinculação correta para seus
AdditionalAttridutes
. Será mais fácil fazer isso com HtmlHelpers
como Html.DropDownListFor
, Html.HiddenFor
e Html.TextBoxFor
. Não consigo ver na sua View. O problema é que se você criar sua
input
s com Helpers eles vão acertar name
O atributo e seu modelo serão vinculados corretamente em POST . Outra coisa que você enfrentará é criar dinamicamente novos itens como no seu exemplo. Você deve pensar sobre o atributo de nome certo. Aconselho você a verificar esta ótima resposta sobre esse problema.