Ho un controller che crea un modello e chiama una vista passando il modello come parametro. Nella vista è presente una direttiva @model che specifica il tipo di modello. Voglio riutilizzare la stessa vista, ma passare un modello diverso dal controller. È possibile modificare in modo dinamico (o condizionato) la direttiva @model nella vista?come cambiare la direttiva @model in un modello diverso nella visualizzazione a rasoio?
Per esempio, nella mia azione di controllo:
var contactsModel = db.GetContacts();
var companiesModel = db.GetCompanies();
return (someCondition)? View(contactsModel):View(companiesModel);
allora come posso definire @model in una direttiva nell'ottica di soddisfare entrambi i modelli? Voglio la stessa vista per rendere le informazioni basate sul tipo di modello passato.
Grazie.
UPDATE:
Grazie, ma ho bisogno di utilizzare una comune vista solo con i diversi modelli.
È possibile, ecco come si può fare.
in una vista definisco:
@model IEnumerable<MvcApplication1.Models.IBaseInterface>
nella classe del modello che definiscono:
public interface IBaseInterface { }
public class Contact: IBaseInterface {}
public class Company: IBaseInterface {}
Poi, in una vista che uso:
@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 }
}
funziona perfettamente :)