Mysql
 sql >> Database >  >> RDS >> Mysql

Asp.Net MVC - Inserimento di più righe nel database

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.