J'ai réussi à lier une liste d'objets correctement. Fonctionne bien. Maintenant, quand je change l'objet d'un objet complexe, il cesse de fonctionner.Liaison à un objet avec des propriétés et une liste
L'objet complexe est le nom de la pièce avec la liste des objets. Lorsque le 'postback' le nom renvoie bien, mais la liste des objets revient à zéro.
Des conseils s'il vous plaît?
Modèle Chambre:
public class Room
{
public string Name { get; set; }
public List<Option> Options { get; set; }
public Room() { }
public Room(string name, List<Option> options)
{
Name = name; Options = options;
}
}
Modèle Options
public class Option
{
public bool IsSelected { get; set; }
public string ImagePath { get; set; }
public int UniqueID { get; set; }
public Option() { }
public Option(bool isSelected, string imagePath, int uniqueID)
{ IsSelected = isSelected; ImagePath = imagePath; UniqueID = uniqueID; }
}
HomeController
public ActionResult Index()
{
List<Option> options = new List<Option>();
options.Add(new Option(true, "../Content/cars_2.jpg", 4));
options.Add(new Option(true, "../Content/vw_one_liter_concept01_2.jpg", 6));
options.Add(new Option(false, "../Content/00018578.jpg", 8));
//Get a list of selected options and union with all remaining
Room model = new Room("Room1", options);
return View(model);
}
[HttpPost]
public ActionResult Index(Room model)
{
ViewData["results"] = model.Options.Count();
return View(model);
}
Index Voir
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MultiSelect.Models.Room>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Index</title>
<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.10.custom.min.js" type="text/javascript"></script>
</head>
<body>
<% using (Html.BeginForm())
{%>
<%= Html.ValidationSummary(true)%>
<%= Html.TextBoxFor(m=> m.Name) %>
<% Html.RenderPartial("MultiSelect", Model.Options); %>
<% } %>
</body>
</html>
MultiSelect Vue partielle
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<MultiSelect.Models.Option>>" %>
<% for (int counter = 0;counter< Model.Count(); counter ++)
{ %>
<div class="opt">
<%= Html.HiddenFor(i=> i[counter].UniqueID)%>
<%= Html.HiddenFor(i=> i[counter].ImagePath) %>
<%= Html.CheckBoxFor(i => i[counter].IsSelected)%>
<img src="<%= Model.ElementAt(counter).ImagePath %>" alt="Image" width="128" height="128" />
</div>
<% } %>
<input id="Submit1" type="submit" value="submit" />
Merci pour votre réponse. Le lien de Steven Sanderson me montre comment lier à une liste d'objets. J'ai été capable de faire cela, mais quand je l'ai changé en un objet qui contient une propriété et une liste d'objets (modèle parent-enfant), il me renvoie la propriété (parent) mais les enfants sont nuls. – user834252