Saltar al contenido

Dos modelos en una vista en ASP MVC 3

Solución:

Cree un modelo de vista principal que contenga ambos modelos.

public class MainPageModel{
    public Model1 Model1{get; set;}
    public Model2 Model2{get; set;}
}

De esta manera, puede agregar modelos adicionales en una fecha posterior con un esfuerzo mínimo.

Para usar la tupla, debe hacer lo siguiente, en la vista, cambie el modelo a:

@model Tuple<Person,Order>

para usar los métodos @html, debe hacer lo siguiente, es decir:

@Html.DisplayNameFor(tuple => tuple.Item1.PersonId)

o

@Html.ActionLink("Edit", "Edit", new { id=Model.Item1.Id }) |

Item1 indica el primer parámetro pasado al método Tuple y puede usar Item2 para acceder al segundo modelo y así sucesivamente.

en su controlador necesita crear una variable de tipo Tuple y luego pasarla a la vista:

    public ActionResult Details(int id = 0)
    {
        Person person = db.Persons.Find(id);
        if (person == null)
        {
            return HttpNotFound();
        }
        var tuple = new Tuple<Person, Order>(person,new Order());

        return View(tuple);
    }

Otro ejemplo: varios modelos en una vista

Otra opción que no tiene la necesidad de crear un modelo personalizado es usar un Tuple <>.

@model Tuple<Person,Order>

No es tan limpio como crear una nueva clase que contenga ambos, según la respuesta de Andi, pero es viable.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *