none
Pasar dos modelos por el controlador RRS feed

  • Pregunta

  • Saludos,

    Soy nuevo en ASP.NET MVC, pero si conosco MVC de otros lenguajes asi ue la idea es la misma, sera cuestion de aprender la API.

    Tengo mi modelo usuario, y mi modelo departamento quiero pasarlo pero como haria ...

    Yo lo hago asi

    return View(uc.obtener(id));


    Ahi retorno una instancia de mi clase Usuario que me genera el EF, y lo imprimo asi

    @Html.DisplayFor(model => model.correo)

    Ahora quiero pasar tambien una instancia del tipo List<Departamentos>(), como lo pasaria, y como lo imprimiria en la vista

    Saludos

    martes, 21 de agosto de 2012 21:04

Respuestas

  • Hay dos opciones:

    La primera, y más elegante, es crear un nuevo modelo que sea una clase definida por tí que dentro encapsule los otros dos objetos que quieres pasar. Luego, en la vista, tendrías que acceder a las "tripas" de dicho objeto, es decir, por ejemplo, en lugar de model.correo accederías a model.primerdato.correo, suponiendo que en tu clase hayas definido una propiedad llamada "primerdato" que uses para encapsular lo que antes era el primero de tus modelos.

    La segunda opción es usar el ViewBag o el ViewData:

    ViewBag.MiLista = new List<Departamentos>(...);

    En la vista se accede a esos mismos datos leyendo el valor de ViewBag.MiLista y haciéndloe un "cast":

    @{ List<Departamentos> laLista = (List<Departamentos>)ViewBag.MiLista; }

    Para pintarlos puedes usar cualquier técnica manual tal como por ejemplo un bucle foreach que recorra los items de la lista y los dibuje con los "tags" de HTML que te gusten (por ejemplo, con <li> si los quieres como List Items). También podrías definir un "Helper" que pinte Departamentos o listas de Departamentos, si piensas usarlo en varias vistas.

    • Propuesto como respuesta jtorrecilla viernes, 24 de agosto de 2012 12:26
    • Marcado como respuesta Eder Costa jueves, 8 de noviembre de 2012 13:48
    miércoles, 22 de agosto de 2012 1:36