4
Si vous avez le type suivant.MVC UpdateModel ComplexType
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<TheParameters> Parameters { get; set; }
public Address Address { get; set; }
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
}
public class TheParameters
{
public string Parameter { get; set; }
}
Vous rendez votre page fortement typée à Personne.
"System.Web.Mvc.ViewPage<Person>"
<form action="/Home/Save" method="post">
<b>Your Name</b>
<label for="FirstName">
<span>First Name</span>
<%=Html.TextBox("Person.FirstName", ViewData.Model.FirstName) %>
</label>
<label for="LastName">
<span>Last Name</span>
<%=Html.TextBox("Person.LastName", ViewData.Model.LastName)%>
</label>
<b>Your Address</b>
<label for="Street">
<span>Street</span>
<%=Html.TextBox("Person.Address.Street", ViewData.Model.Address.Street)%>
</label>
<label for="City">
<span>City</span>
<%=Html.TextBox("Person.Address.City", ViewData.Model.Address.City)%>
</label>
<label for="State">
<span>State</span>
<%=Html.TextBox("Person.Address.State", ViewData.Model.Address.State)%>
</label>
<label for="Parameters">
<span>Parameters</span>
<%
int index = 0;
foreach (TheParameters parameter in ViewData.Model.Parameters)
{
Response.Write(Html.TextBox("Person.Parameters.Parameter[" + index + "]", parameter.Parameter));
index++;
}
%>
</label>
<input id="submit" type="submit" value="submit" />
</form>
Dans le contrôleur les éléments suivants:
public ActionResult Index()
{
Person p = new Person();
p.FirstName = "Name";
p.LastName = "Last";
p.Address = new Address();
p.Address.City = "city";
p.Address.State = "state";
p.Address.Street = "street";
p.Parameters = new List<TheParameters>();
p.Parameters.Add(new TheParameters(){ Parameter = "P1" });
p.Parameters.Add(new TheParameters(){ Parameter = "p2" });
ViewData.Model = p;
return View();
}
public ActionResult Save(FormCollection form)
{
Person p = new Person();
UpdateModel(p, "Person", form.ToValueProvider());
return RedirectToAction("Index");
}
j'appelle le UpdateModel. Toutes les propriétés sont remplies correctement à l'exception des Person.Parameters. Ceci est toujours nul après le updateModel.
Existe-t-il une solution pour cela ou une solution de contournement?
salutations, Steve
Ce updateModel fonctionne. Il y avait une erreur dans ma page aspx pour l'indexation de la liste. –