Usuario
Declaracion de dos model en un razor

Pregunta
-
Buenas noches. Necesito que me guien, lo que necesito es mostrar en un razor una lista de Empleados y a travez de un formulario hacer un alta.
Entendi que para mostrar declaro @model IEnumerable<> , pero a la hora de aplicar este model al formulario no me sale :/ Alguien me podria guiar ? Se los agradeceria.
Facundo Zerpa
Todas las respuestas
-
Hola,
La directiva @model permite hacer referencia a un modelo fuertemente tipado. El controlador deberá enviar una lista de empleados.
public ActionResult Index() { using(ContextDB db = ContextDB()) { var empleados = db.Empleados.ToList() return View(empleados) } }
En la vista se hae referencia al modelo
@model IEnumerable<XXXX.Models.Empleado> @foreach (var item in Model) { @Html.DisplayFor(modelItem => item.NombreEmpleado) }
Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.
Willams Morales P.
Arequipa - Perú- Editado Willams Morales martes, 13 de enero de 2015 2:30
-
-
-
-
Me temo que no, recuerda lo que envías del controlador a la vista
return View(empleados)
Ahora, puedes enviar la colección pero si quieres referirte a un registro en especial puedes hacer lo siguiente:
@Model.Where(a => a.idEmpleado == 1).Select(a => a.NombreEmpleado).FirstOrDefault()
Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.
Willams Morales P.
Arequipa - Perú- Editado Willams Morales martes, 13 de enero de 2015 2:51
-
Lo que necesito hacer es que en una pagina razor mostrar una lista de empleados traido de la base de datos y en la misma pagina mediante un pop up hacer un alta.
He leido algo sobre ViewModel pero no logro entender 100%
Me llego a hacer entender ? :/
Facundo Zerpa
-
Entiendo, tu vista recibirá una colección de empleados que es enviada desde el action. Imagínate que esa colección la muestras en una tabla, por cada fila podrás tener un @Html.ActionLink("Editar Empleado", "Edit", routevalues: new { idEmpleado = item.IdEmpleado }). Ese enlace invocará al action Edit donde seguramente retornará un sólo registro.
-
>>lo que necesito es mostrar en un razor una lista de Empleados y a travez de un formulario hacer un alta.
algo como esto
Implementing Basic CRUD Functionality with the Entity Framework in ASP.NET MVC Application
alli veras que se lista la entidad, se crea una nueva y se puede editar, todas las operaciones
Getting Started with Entity Framework 6 Code First using MVC 5
analiza el titulo "Creating a Student Controller and Views" alli arma la tabla de la entidad recorriendo el model que en definitiva es una lista
y define las opciones para eliminar y editar la entidad en cada row de la tabla que genera
saludosLeandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Entonces tienes dos vistas razor, dos modelos y dos acciones:
Para mostrar la lista:
- Un modelo IEnumerable<MiEntitdad>
- Una vista razor ListaEntidades.chtml con el modelo anterior
- Una accion ListaEntidades que obtiene la lista de entidades de la base de datos y devuelve una view al que se le pasa el modelo
ListaEntidades.chtml tendrá por cada entidad un enlace <a href=".." >Editar</a> donde el href apunta a la acción que edita la entidad. Esta acción tiene como parámetro el id de la entidad.
Para mostrar la pantalla de edición:
- Un model MiEntidad
- Una vista razor EditarEntidad.chtml
- Una acción EditarEntidad con el parámetro IdEntidad que lee de la base de datos la entidad y devuelve una vista al que se le pasa el modelo (la entidad a editar)
Al pulsar el enlace "Editar" podrían pasar dos cosas:
- Se va a otra página donde se muestra la pantalla de editar. En este caso no se hace llamada por Ajax y la vista devuelta por la acción editar es una vista completa.
- Se muestra un popup para editar la entidad. En este caso, mediante JQuery te susbscribes al evento click de los enlaces editar. Cuando se hace click, haces una llamada ajax al valor del href del enlace. La acción editar devuelve una vista parcial que muestras en un popup mediante el plugin modal de bootstrap.
Jesús López
EntityLite a lightweight, database first, micro orm