Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Asp.Net MVC - Inserindo várias linhas no banco de dados


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.