Tengo un controlador que crea un modelo y llama a una vista que pasa el modelo como parámetro. En la Vista hay una directiva @model que especifica el tipo de Modelo. Quiero reutilizar la misma Vista, pero paso un modelo diferente del controlador. ¿Es posible cambiar dinámicamente (o condicionalmente) la directiva @model en la Vista?cómo cambiar la directiva @model a un modelo diferente en la vista de afeitar?
Por ejemplo, en mi acción del controlador:
var contactsModel = db.GetContacts();
var companiesModel = db.GetCompanies();
return (someCondition)? View(contactsModel):View(companiesModel);
Entonces, ¿cómo puedo definir @Model en una vista directiva para satisfacer tanto a los modelos? Quiero la misma vista para representar la información según el tipo de modelo aprobado.
Gracias.
ACTUALIZACIÓN:
Gracias, pero necesito utilizar una única visión común con diferentes modelos.
Es posible, así es como se podría hacer esto.
en una vista defino:
@model IEnumerable<MvcApplication1.Models.IBaseInterface>
En la clase de modelo que defina:
public interface IBaseInterface { }
public class Contact: IBaseInterface {}
public class Company: IBaseInterface {}
Luego, en una vista que utilizo:
@if (Model is List<Contact>) {
@foreach (var item in (List<Contact>)Model)
{ // Here item has type Contact }
}
@if (Model is List<Company>) {
@foreach (var item in (List<Company>)Model)
{ // Here item has type Company }
}
funciona perfectamente :)