Post Liste der Liste der model-Objekt zum Controller ASP.NET MVC

Form wie diese

Post Liste der Liste der model-Objekt zum Controller ASP.NET MVC

ViewModel:

public class ProductViewModel
{
    public string Product { get; set; }
    public IEnumerable<SizeColorQuantityViewModel> SizeColorQuantities { get; set; }
}
public class SizeColorQuantityViewModel
{
    public string ColorId { get; set; }
    public List<SizeAndQuantity> SizeAndQuantities { get; set; }
}
public class SizeAndQuantity
{
    public int SizeId { get; set; }
    public int Quantity { get; set; }
}

Anzeigen:

@model ProjectSem3.Areas.Admin.Models.ProductViewModel
@{
    ViewBag.Title = "Create";
    Layout = "~/Areas/Admin/Views/Shared/_Layout.cshtml";
    string[] ListColor = { "Red", "Blue" };
    string[] ListSize = { "S", "M", "L", "XL" };
}
    @for (var i = 0; i < ListColor.Length; i++)
    {
    <div class="form-group">
       <label class="col-md-2 control-label">Color:</label>
       <div class="col-md-2">
          @Html.TextBox("[" + i + "].ColorId", null, new { @Value = ListColor[i], @class = "form-control", @readonly = "readonly" })
       </div>
    </div>
    <div class="form-group">
       <label class="col-md-2 control-label">Size and Quantity:</label>
       @for (var j = 0; j < ListSize.Length; j++)
       {
       <div class="col-md-2">
          @Html.TextBox("[" + i + "][" + j + "].SizeAndQuantities.SizeId", null, new
          {
          @class = "form-control",
          @style = "margin-bottom: 15px",
          @Value = ListSize[j],
          @readonly = "readonly"
          })
          @Html.TextBox("[" + i + "][" + j + "].SizeAndQuantities.Quantity", null, new { @class = "form-control" })
       </div>
       }
    </div>
    }

Controller:

//GET: Admin/Product
public ActionResult Create()
{
    return View();
}
//POST: Admin/Product
[HttpPost]
public ActionResult Create(ProductViewModel product, IEnumerable
<SizeColorQuantityViewModel>
sizeColorQuantity, IEnumerable
<SizeAndQuantity>
sizeAndQuantity)
{ 
     return View();
}

Kann ich get-Wert übergeben wird, aus dem ViewModel IEnumerable<SizeColorQuantityViewModel> sizeColorQuantity Controller. Aber mit diesem Modell IEnumerable<SizeAndQuantity> sizeAndQuantity, ich kann es gar nicht mehr Wert.
Ursache dafür ist die 2-D-Array so, ich habe keine Ahnung für diese Probleme. Könnten Sie mir beibringen, wie zu binden Wert für IEnumerable<SizeAndQuantity> sizeAndQuantity.

  • Ihre Erzeugung Eingänge mit name-Attribute, die sich nicht auf Ihr Modell, aber nicht eine Menge von dieser code macht Sinn. Warum haben Sie Sammlungen ListColor und ListSize aus Ihrer Sicht? Sind Sie versuchen, Bearbeiten Sie die Menge, die für ein Produkt mit Rot/Klein, Rot/Mittel und Rot/Groß etc, und das gleiche wieder für die Blau/Klein, Blau/Medium, etc?
  • Ja, ich denke auch eine Menge von Möglichkeiten, um post zu einem Produkt mit Größe, Farbe und Menge. Haben Sie irgendwelche anderen Möglichkeiten? Wenn es Ihnen nichts ausmacht, könnten Sie beschreiben, mich mehr? Vielen Dank 😀
  • Sie brauchen, um eine Menge von änderungen, um diese Arbeit zu machen. Können Sie ändern IEnumerable<SizeColorQuantityViewModel> zu List<SizeColorQuantityViewModel>? (es macht es einfacher)
  • Ich Folgen Sie diese Tipps: codeproject.com/Tips/855577/..., Bevor ich auch die set-Liste<SizeColorQuantityViewModel> aber Es scheint nicht zu funktionieren
InformationsquelleAutor Long Nguyen | 2016-08-21
Schreibe einen Kommentar