簡體   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