在控制器中返回不同的视图

时间:2011-03-20 07:15:32

标签: c# asp.net asp.net-mvc-3

如果我有一个控制器并且我想根据我的条件逻辑返回一个视图,那可能吗?我有不同类型的模型,我想插入到视图中依赖于我的条件逻辑(if语句)我可以这样做吗?我将如何做到这一点

2 个答案:

答案 0 :(得分:16)

当然,返回View()接受视图名称作为其第一个参数。只需指定一个不同的视图。

如果您有不同的模型进入同一视图,请尝试合并它们,创建容器模型(每个模型类型一个属性,然后是枚举,以便视图知道要渲染的内容),使用动态作为在视图中建模,或为每个模型创建一个视图。

第一个和最后一个是我的首选,但这取决于细节。

答案 1 :(得分:2)

您可以在控制器中执行类似的操作(这是查看用户是否已经过验证的示例)

if (Request.IsAuthenticated)
    return View("View1", new AuthenticatedViewModel(myValues1));
else
    return View("View2", new AnonymousViewModel(myValues2));