2

我正在设置单页应用程序 (SPA) 并希望设置,目前有两条路线。例如:

  • Route 1: http://localhost- 这是需要身份验证的默认路由(管理区域)
  • 路线 2: http://localhost/<client>/<clients project name>/- 这不需要身份验证(仅查看)

在管理区域,他们设置了<client>and <clients project name>,因此我知道我需要在 MVC4 Routes 中设置这个配置,但我不清楚我将如何处理这个。

另一个需要注意的是,如果<clients project name>没有在 URL 中输入,它将为该客户端显示一个搜索页面。

4

1 回答 1

6

MVC 中路由的一大优点是能够将任何内容路由到任何地方,无论 url 是否与控制器和操作方法的命名匹配。RouteConfig 允许我们注册特定的路由来满足这一点。让我向您展示如何实现这一目标。

路线一:

这由路由配置中的默认路由处理。

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.
    }
}
于 2013-04-30T12:57:31.023 回答