J'utilise RC1 de ASP.NET MVC.liant modèle par défaut et types complexes qui incluent une liste
Je suis en train d'étendre Phil Haack's exemple de liaison de modèle. Je suis en train d'utiliser le modèle de liaison par défaut pour lier l'objet suivant:
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; }
}
J'utilise le code de l'exemple de Phil avec quelques modifications:
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; }
}
}
Voir :
<%@ 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>
Mon problème est que les types simples (Id et Titre) apparaît dans l'obje de la liste de produits ct, mais pas la liste. Donc:
- Mon code est mauvais (ne serait pas surpris)?
- le liant modèle par défaut peut gérer les objets ListOfProducts?
- Si le classeur de modèle par défaut ne gère pas ce type d'objet, que dois-je faire (exemples si possible)?
Merci d'avance.
Vous n'êtes pas un mannequin. J'avais le même problème, mais c'était parce que ma liste n'était pas une propriété.J'ai eu quelque chose d'analogue à: public Liste Articles, au lieu de public Liste Objets {get; ensemble; } –