[英]ASP.NET MVC4 Routing - Multiple routes to the same location
我正在设置单页应用程序(SPA),并且想设置当前两条路由。 例如:
http://localhost
这是需要身份验证的默认路由(管理区域) http://localhost/<client>/<clients project name>/
-不需要身份验证(仅查看) 在管理区域中,他们设置了<client>
和<clients project name>
,因此我知道我需要在MVC4路由中设置此配置,但是我不清楚我将如何处理它。
另一个警告是,如果未在URL中输入<clients project name>
,它将显示该客户端的搜索页面。
关于MVC中路由的一大优点是能够将任何内容路由到任何地方,而无论url是否与控制器和操作方法的名称匹配。 RouteConfig允许我们注册特定的路由来满足此需求。 让我向您展示如何实现这一目标。
路线1:
这由路由配置中的默认路由处理。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional });
点击http://localhost
将带您进入Home
控制器和Index
操作方法。
路线2:
我们可以设置一条路由来满足http://localhost/<client>
和http://localhost/<client>/<clients project name>
routes.MapRoute(
"Client",
"{client}/{title}",
new { controller = "Home",
action = "Client",
title = UrlParameter.Optional });
点击http://localhost/bacon
或http://localhost/bacon/smokey
将带您进入Home
控制器和Client
操作方法。 注意title
是一个可选参数,这是我们如何使两个URL都可以在同一路由下工作的方式。
为了使它在控制器端起作用,我们的操作方法Client
需要看起来像这样。
public ActionResult Client(string client, string title = null)
{
if(title != null)
{
// Do something here.
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.