ASP .NET MVC 3基于标准的多个操作的相同路由

时间:2013-04-20 21:09:56

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

ASP .NET MVC 3+是否可以根据特定状态为多个操作设置相同的路由?

例如,在LinkedIn或某些类似网站上,相同路线http://site-domain/home 用于多个视图。

如果用户未登录,则主页显示欢迎视图,但如果用户已登录,则显示用户的主页,其中显示其通知和其他用户特定数据。

我们可以使用相同的路由URL来路由到不同控制器的不同操作,具体取决于用户的登录状态或任何其他类型的数据控件吗?

注意:在同一个操作中显示不同视图不是一个选项,因为两个操作具有完全不同的逻辑。

1 个答案:

答案 0 :(得分:0)

当然。您有几个选项,第一个选项是根据他的某些属性为用户提供您选择的视图,但是您对视图模型的控制有限。

public ActionResult SomeAction(){

if(User.Identity.Name == "Admin")
    return View("AdminView");
else
    return View("SomeOtherView");
}

另一种选择是将用户在控制器方法内重定向到另一个操作,如下所示:http://weblogs.asp.net/mikebosch/archive/2008/02/02/asp-net-mvc-tip-2-redirecting-to-another-action-and-passing-information-to-it.aspx

当然,总有一种选项可以根据某些用户属性在页面上呈现部分视图。如果您可以提供有关您的项目的更多信息,这将有助于找到解决方案。