簡體   English   中英

ASP.NET MVC 路由系統

[英]ASP.NET MVC Routing System

我試圖了解 MVC 路由是如何工作的,但似乎我在此過程中迷路了。

我在Global.asax文件中定義了兩條路由如下

routes.MapRoute("Public", "Public/{controller}/{action}", new { controller = "Home", action = "Index" }); 
routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" });

我的問題——這可能很簡單:

  1. 當我輸入"~/Public/Account/Register" ,它會通過Register操作轉到Account控制器。 為什么第一段(公共)不作為控制器的值?
  2. 當我輸入"~/Shop/OldAction" ,它會通過Index操作轉到Home控制器。 請描述。
  3. 路由系統是否默認將第一段作為控制器,第二段作為動作?
  4. 路由系統是否將我們在 URL 模式中的{}中提到的任何內容作為段變量。

您已將“公共”作為固定短語放在下面的代碼中:

Public/{controller}/{action}"

通常那里沒有“公共”。 如果你想讓公共動態,你必須把它放在 {public} 之類的括號中,並在以下代碼中為“公共”添加功能:

{ controller = "Home", action = "Index" });    
{ controller = "Home", action = "Index", public="None" });

在第二行中,您將一個名為“Public”的變量傳遞給 actionresult,默認情況下它帶有一個字符串值“None”,並且可以根據您替換 public 的內容進行更改。

再說一次,在控制器變量之前放置任何變量並不常見。

{ } 中的任何內容都作為一個變量,它采用默認值,可以根據用戶輸入的地址進行更改。

routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" });

上面的代碼默認轉到主頁/索引。 你沒有在那里設置任何變量。

我希望這能回答所有 3 個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM