Tengo una aplicación ASP.Net MVC con un modelo de varias capas que contiene una colección.ASP.Net MVC - modelo con colección que no se encuentra en la postback
Creo que la vista para crear los objetos está configurada correctamente, pero simplemente no llena la colección dentro del modelo cuando publico el formulario en el servidor.
I tienen un fragmento de datos que se encuentra en la jerarquía de clases de este modo:
person.PersonDetails.ContactInformation[0].Data;
Esta estructura de clases es creado por LinqToSql, y ContactInformation es de tipo EntitySet<ContactData>
. Para crear la vista que paso por el siguiente:
return View(person);
y dentro de la vista I tener una forma que contiene un único cuadro de texto con un nombre asociado con el campo mencionado anteriormente:
<%= Html.TextBox("person.PersonDetails.ContactInformation[0].Data")%>
el método POST dentro de mi controlador es entonces el siguiente:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create (Person person)
{
//Do stuff to validate and add to the database
}
es en este punto donde me pierdo como person.PersonDetails.ContactInformation.Count() == 0. Entonces, ModelBinder creó un objeto ContactInformation pero no lo llenó con el objeto que debería contener (es decir, ContactData) en el índice 0.
Mi pregunta es doble: 1. He tomado el enfoque correcto ... es decir, debería ¿este trabajo? 2. ¿Alguna idea de por qué podría fallar el llenado del objeto ContactInformation?
Muchas gracias, Richard
Gracias, eso funciona a la perfección. He probado un ejemplo con una jerarquía mucho más profunda que funcionó perfectamente, pero probablemente tengas razón de que se está perdiendo en la complejidad. Sin embargo, dos comentarios, para mayor claridad: 1. Solo necesitaba la [Bind (Prefix = "Person.PersonDetails.ContactInformation"]] ContactInformation [] info) y la configuración correspondiente del objeto del modelo. 2. ContactInformation [] necesitaba ser EntitySet para corresponderse con el tipo correcto. Ahora para buscar más detalles sobre el prefijo ... Gracias por su ayuda. Richard –
Richbits
Bien, todavía no había leído sobre 'prefijos'. – Ropstah
bueno. O podría desarrollar su propio encuadernador de modelo personalizado que comprendería cómo derivar su modelo complejo de las entradas de formulario, ¿puede compartir el enlace o impl. si ya lo has hecho? –