MVC - Routing - 網址路由

來源:互聯網
上載者:User

標籤:style   class   blog   c   code   tar   

1. Routing  : 路由 

  主要是比對通過瀏覽器傳來的http要求與響應適當的網址給瀏覽器。

?
1 @Html.ActionLink("關於","About","Home")

  這段代碼產生的HTML超串連:

?
1 <a href="/Home/About">關於</a>

  

2. 預設情況下 網址路由規則定義在 App_Start\RouteConfig.cs文檔中。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 namespace MvcApplication3 {     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 }             );         }     } }

 1.1 所有的ASP.NET Web 應用程式的路口點都是在 HttpApplication 的Application_Start()中。

  其中 RouteTable.Routes是一個公開的靜態對象。用來儲存所有的網址路由規則集合 (RouteCollection)。

     在ASP.NET MVC 中 程式會從Global.asax中的 Application_Start() 事件載入一下方法。 

  RouteConfig.RegisterRoutes(RouteTable.Routes); 就是在載入網路路由地址

?
1 2 3 4 5 6 7 8 9 10 11 12 public class MvcApplication : System.Web.HttpApplication {     protected void Application_Start()     {         AreaRegistration.RegisterAllAreas();           WebApiConfig.Register(GlobalConfiguration.Configuration);         FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);         RouteConfig.RegisterRoutes(RouteTable.Routes);         BundleConfig.RegisterBundles(BundleTable.Bundles);     } }

  

1.2 RegisterRoutes 中的IgnoreRoute 方法,是用來定義不要通過網址路由處理的網址,該方法的第一個參數就是設定“不要 通過網址路由處理的URL樣式”。

?
1 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  所謂的"不要通過網址路由處理的網址" 就是:如果今天用戶端瀏覽器傳送過來的網址在這一條規則比對成功,那麼就不會再通過網址路由繼續比對下去。

1.3 IgnoreRoute 方法中的第一個參數 “resource”。代表RouteValue路由變數,可以取任意值

 {resource}.axd代表所有的*.axd文檔網址。所有的.axd文檔通常都代表著其中一個HttpHandler .就如.ashx檔案一樣。

 

1.4 IgnoreRoute 方法中的第一個參數中還有一個{*pathInfo}參數。也是一個 RouteValue路由變數。

  *pathInfo代表抓取全部的意思。

  完整的 地址 "{resource}.axd/{*pathInfo}"  舉個例子:

  若網址為 /WebResource.axd/a/b/c/d 的話, {resource}.axd 就會比對WebResource.axd。

     而{*pathInfo}就會得到啊 a/b/c/d, 如果去掉* 號就只能得到 a.

1.5  MapRoute。是用來定義網址路由擴充的。

    MapRoute方法的指定參數方式 已改為  ”具名參數“ 。

?
1 2 3 4 5 6 7 private void Me(int x, int y = 6, int z = 7)        {            //....        }   Me(1, 2, 3);// 標準調用   Me(1, 5);//  等同與 Me(1,5,7) ,Z已經定義   Me(1);//也可以

  name :參數第一Route 名稱 ,在此為 “Default”.

  url : 具名參數定義。 {controller}/{action}/{id}

    定義URL樣式包含三個路由參數分別為controller ,action,id

    如果輸入網址 /Home/About/123, 就對應以上三個值 

    Default 具名參數 的預設值,當網址路由比對不到 http要求的網址時會嘗試帶入這裡定義的預設值。

?
1 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

  

 

 

 

    

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.