Sto utilizzando RC1 di ASP.NET MVC.Raccoglitore modello predefinito e tipi complessi che includono un elenco
Sto cercando di estendere l'esempio di associazione modello Phil Haack's. Sto cercando di utilizzare il legante modello predefinito di impegnare la seguente oggetto:
public class ListOfProducts
{
public int Id { get; set; }
public string Title{ get; set; }
List<Product> Items { get; set; }
}
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
Sto utilizzando il codice dall'esempio di Phil, con alcune modifiche:
Controller:
using System.Collections.Generic;
using System.Web.Mvc;
namespace TestBinding.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
//Action method on HomeController
public ActionResult UpdateProducts(ListOfProducts productlist)
{
return View(productlist);
}
}
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
public class ListOfProducts
{
public int Id { get; set; }
public string Title { get; set; }
List<Product> Items { get; set; }
}
}
View :
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="indexHead" ContentPlaceHolderID="head" runat="server">
<title>Home Page</title>
</asp:Content>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<form method="post" action="/Home/UpdateProducts">
<input type="text" name="productlist.id" value="99" />
<input type="text" name="productlist.Title" value="SomeTitle" />
<input type="hidden" name="productlist.Index" value="0" />
<input type="text" name="productlist.items[0].Name" value="Beer" />
<input type="text" name="productlist.items[0].Price" value="7.32" />
<input type="hidden" name="productlist.Index" value="1" />
<input type="text" name="productlist.Items[1].Name" value="Chips" />
<input type="text" name="productlist.Items[1].Price" value="2.23" />
<input type="hidden" name="productlist.Index" value="2" />
<input type="text" name="productlist.Items[2].Name" value="Salsa" />
<input type="text" name="productlist.Items[2].Price" value="1.23" />
<input type="submit" />
</form>
</asp:Content>
il mio problema è che i tipi semplici (Id e titolo) appare nel obje Lista prodotti ct, ma non la lista. Quindi:
- Il mio codice è sbagliato (non sarebbe sorpreso)?
- Il raccoglitore modello predefinito può gestire gli oggetti ListOfProducts?
- Se il raccoglitore modello predefinito non gestirà questo tipo di oggetto cosa devo fare (esempi se possibile)?
Grazie in anticipo.
Non sei un manichino. Stavo avendo lo stesso problema, ma era perché la mia lista non era una proprietà.Avevo qualcosa di analogo a: Elenco pubblico Elementi, anziché Elenco pubblico Elementi {get; impostato; } –