MVC 框架 - 路由引擎



ASP.NET MVC 路由允許使用描述使用者操作且更易於使用者理解的 URL。同時,路由可用於隱藏不打算顯示給終端使用者的 資料。

例如,在一個不使用路由的應用程式中,使用者將看到 URL 為 http://myapplication/Users.aspx?id=1,這對應於 myapplication 路徑中的 Users.aspx 檔案,並將 ID 傳送為 1。通常,我們不希望將此類檔名顯示給終端使用者。

為了處理 MVC URL,ASP.NET 平臺使用路由系統,它允許您建立任何所需的 URL 模式,並以清晰簡潔的方式表達它們。MVC 中的每個路由都包含一個特定的 URL 模式。此 URL 模式與傳入的請求 URL 進行比較,如果 URL 與此模式匹配,則路由引擎將使用它來進一步處理請求。

MVC 路由 URL 格式

要理解 MVC 路由,請考慮以下 URL:

http://servername/Products/Phones

在上面的 URL 中,“Products” 是第一段,“Phone” 是第二段,可以用以下格式表示:

{controller}/{action} 

MVC 框架會自動將第一段視為控制器名稱,將第二段視為該控制器內的一個操作。

注意 - 如果您的控制器名稱為 ProductsController,您只需要在路由 URL 中提及 Products。MVC 框架會自動理解 Controller 字尾。

建立一個簡單的路由

路由定義在 RouteConfig.cs 檔案中,該檔案位於 App_Start 專案資料夾下。

MVC Route Config

您將在該檔案中看到以下程式碼:

public class RouteConfig { 
   
   public static void RegisterRoutes(RouteCollection routes) { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  
      
      routes.MapRoute( 
         name: "Default", 
         url: "{controller}/{action}/{id}", 
         defaults: new { controller = "Home", action = "Index", 
            id = UrlParameter.Optional } 
      ); 
   } 
} 

當應用程式啟動時,Global.ascx 會呼叫此 RegisterRoutes 方法。Global.ascx 下的 Application_Start 方法呼叫此 MapRoute 函式,該函式設定預設控制器及其操作(控制器類中的方法)。

要根據我們的示例修改上述預設對映,請更改以下程式碼行:

defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional } 

此設定將選擇 ProductsController 並呼叫其中的 Phone 方法。同樣,如果您在 ProductsController 中有另一個方法,例如 Electronics,則它的 URL 將為:

http://servername/Products/Electronics

廣告