У меня есть контроллер, который создает модель и вызывает представление, передавая модель в качестве параметра. В представлении есть директива @model, указывающая тип модели. Я хочу повторно использовать тот же вид, но передать другую модель из контроллера. Можно ли динамически (или условно )изменить директиву @model в представлении?
Например, в моем действии контроллера:
var contactsModel = db.GetContacts();
var companiesModel = db.GetCompanies();
return (someCondition)? View(contactsModel):View(companiesModel);
Тогда как я могу определить @model в директиве View, чтобы удовлетворить обе модели? Я хочу, чтобы одно и то же представление отображало информацию на основе типа переданной модели.
Спасибо.
ОБНОВЛЕНИЕ:
Спасибо, но мне нужно использовать один общий вид только с разными моделями.
Это возможно, вот как это можно сделать.
В представлении я определяю:
@model IEnumerable<MvcApplication1.Models.IBaseInterface>
В классе Model я определяю:
public interface IBaseInterface { }
public class Contact: IBaseInterface {}
public class Company: IBaseInterface {}
Затем в представлении я использую:
@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 }
}
Работает отлично:)