ASP .NET MVC 3+是否可以根据特定状态为多个操作设置相同的路由?
例如,在LinkedIn或某些类似网站上,相同路线http://site-domain/home
用于多个视图。
如果用户未登录,则主页显示欢迎视图,但如果用户已登录,则显示用户的主页,其中显示其通知和其他用户特定数据。
我们可以使用相同的路由URL来路由到不同控制器的不同操作,具体取决于用户的登录状态或任何其他类型的数据控件吗?
注意:在同一个操作中显示不同视图不是一个选项,因为两个操作具有完全不同的逻辑。
答案 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
当然,总有一种选项可以根据某些用户属性在页面上呈现部分视图。如果您可以提供有关您的项目的更多信息,这将有助于找到解决方案。