繁体   English   中英

ASP.NET MVC4路由-到同一位置的多条路由

[英]ASP.NET MVC4 Routing - Multiple routes to the same location

我正在设置单页应用程序(SPA),并且想设置当前两条路由。 例如:

  • 路由1: http://localhost这是需要身份验证的默认路由(管理区域)
  • 路线2: 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/baconhttp://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM