Nota: Este post ha sido importado de mi blog de geeks.ms. Es posible que algo no se vea del todo "correctamente". En cualquier caso puedes acceder a la versión original aquí
Buenas! El otro día me enviaron la siguiente duda:
Imaginate esto:
class Direccion{
string Calle {get;set;}
int Piso {get;set;}
}
class Cliente {
string Nombre {get;set;}
List
}
Imagina que tiene mas propiedades cada clase pero para el ejemplo sirve.
Entonces tengo una Vista para definir la información de Cliente:
Donde van a aparecer los campos para rellenar el cliente. Dentro voy a tener un boton que va a ir agregandome vistas parciales con la info de Direcciones.
Actualmente la parte de ediccion de Direcciones estaría en una Vista Parcial (con su correspondiente Form).
El problema que tengo es que necesito Enviar todo en el submit de Cliente y realmente es como si no tuviese la información de las direcciones.
Vale, de lo que se trata es que des de la vista para crear un Cliente, podamos añadir objetos Direccion, tantos como sea necesario, usando una vista parcial que iremos cargando via Ajax. El problema era que no se recibía la información de las direcciones.
Hace algún tiempo hablé de las peculiaridades del binding de colecciones en ASP.NET MVC (parte 1, parte 2 y parte 3). Si os miráis la primera parte de la serie, allí comentábamos que nombre debían tener los campos que se enlazaban a una colección. Básicamente si queremos enlazar una colección que está en la propiedad Direcciones de nuestro viewmodel, los campos deben llamarse Direcciones[0], Direcciones1 y así sucesivamente.
Sabiendo esto, queda claro lo que hay que hacer:
- Una vista para crear un Cliente. Dicha vista contendrá un en el cual iremos cargando las vistas parciales para crear direcciones
- Una vista parcial para crear un objeto direccion
Tan solo debemos tener cuidado de incrustar las vistas parciales dentro del