sql >> Databáze >  >> RDS >> Mysql

Asp.Net MVC - vkládání více řádků do databáze

Pokud chápu, že máte pravdu, máte ve svém modelu zobrazení seznam atributů.

Takže pokud s ním chcete pracovat, měli byste ho umístit do seznamu.

Měli byste tedy změnit svůj model zobrazení:

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

To je v podstatě vše. Nyní byste měli vytvořit správnou vazbu pouze pro vaše AdditionalAttridutes . Bude snazší to udělat pomocí HtmlHelpers jako Html.DropDownListFor , Html.HiddenFor a Html.TextBoxFor . Jen to nevidím ve vašem zobrazení.

Jde o to, pokud vytvoříte input s Pomocníky dostanou správné name Atribut a váš model se správně spojí při POST .

Další věc, se kterou se setkáte, je dynamicky vytvářet nové položky jako ve vašem příkladu. Měli byste přemýšlet o správném atributu jména. Doporučuji vám zkontrolovat tuto skvělou odpověď o tomto problému.




  1. Konstrukce příkazů UPDATE pomocí asociativních polí v PHP

  2. chyba mysql 5.7 log-slow-queries

  3. Syntaxe MySQL při vytváření cizího klíče

  4. Používám Java PooledConnections správně?