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.