Mysql
 sql >> Base de données >  >> RDS >> Mysql

Asp.Net MVC - Insertion de plusieurs lignes dans la base de données

Si je comprends bien, vous avez une liste d'attributs dans votre modèle de vue.

Donc, si vous voulez travailler avec, vous devez le placer dans la liste.

Vous devez donc modifier votre modèle de vue :

//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;}
}

C'est essentiellement tout. Maintenant, vous ne devriez faire que la bonne liaison pour votre AdditionalAttridutes . Ce sera plus facile de le faire avec HtmlHelpers comme Html.DropDownListFor , Html.HiddenFor et Html.TextBoxFor . Je ne peux tout simplement pas le voir dans votre vue.

Le fait est que si vous créez votre input s avec les Helpers, ils obtiendront le bon name L'attribut et votre modèle se lieront correctement sur POST .

Une autre chose à laquelle vous serez confronté est de créer dynamiquement de nouveaux éléments comme dans votre exemple. Vous devriez penser au bon attribut de nom. Je vous conseille de vérifier cette excellente réponse à propos de ce problème.