【发布时间】:2012-07-16 08:24:59
【问题描述】:
我有一个控制器,它创建一个模型并调用一个将模型作为参数传递的视图。 在视图中有一个@model 指令指定模型的类型。 我想重用相同的视图,但从控制器传递不同的模型。 是否可以在视图中动态(或有条件地)更改@model 指令?
例如,在我的控制器操作中:
var contactsModel = db.GetContacts();
var companiesModel = db.GetCompanies();
return (someCondition)? View(contactsModel):View(companiesModel);
那么如何在 View 指令中定义 @model 来满足两个模型呢? 我希望相同的视图根据传递的模型类型来呈现信息。
谢谢。
更新:
谢谢,但我只需要对不同模型使用一个通用视图。
这是可能的,这是可以做到的。
在我定义的视图中:
@model IEnumerable<MvcApplication1.Models.IBaseInterface>
在我定义的模型类中:
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 }
}
完美运行:)
【问题讨论】:
标签: c# asp.net-mvc-3 razor model