MVC中url路由規則

來源:互聯網
上載者:User

標籤:

Routing:首先擷取視圖頁面傳過來的請求,並接受url路徑中的controller和action以及參數資料,根據規則將識別出來的資料傳遞給某controller中的某個action方法

MapRoute()有6個方法可以重載

方法1:系統提供的預設路由規則格式

public static void RegisterRoutes(RouteCollection routes)        {            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");            routes.MapRoute(                name: "Default",//路由名稱                url: "{controller}/{action}/{id}",//帶有參數的url                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }//參數預設值            );        }

 url格式為:http://localhost:0000/Home/Index 對於規則為{controller}/{action}/{id} 黑色部分就是對應部分 

詳細匹配為:http://localhost:0000/Home/Index/1  通過Routing組件分析該url  controller為Home  action為Index 參數為Id為1 使用了MapRoute( string name, string url, object defaults);這個方法的重載。

 

方法:2:不使用預設值的url路由規則

函數頭:MapRoute( string name, string url);

 routes.MapRoute("沒有預設值路由規則", "{controller}/{id}-{action}");

適合的Url例子:http://localhost:0000/Custom/1-Detials  

它將不匹配http://localhost:0000/

 

方法3:帶有命名空間的Url路由規則

 函數頭:MapRoute( string name, string url, string[] namespaces);//路由名,Url規則,名稱空間

routes.MapRoute(

"myurl",//路由名稱

"{controller}/{id}-{action}",//帶有參數的url

new{controller="Home",action="Index",id=UrlParameter.Optional},//參數預設值

new string[]{"mymvc.Controllers"}//命名空間

);

Url:http://localhost:0000/Custom/1-Detials
      這個例子是帶命名空間的路由規則,這在Aeras使用時非常有用。

 

方法4:帶有約束的路由規則

  函數頭:MapRoute( string name, string url, object defaults, object constraints);//路由名,Url規則,預設值,名稱空間

routes.MapRoute(
               "Rule1",
               "{controller}/{action}-{Year}-{Month}-{Day}}",
               new { controller = "Home", action = "Index", Year = "2010", Month ="04", Day = "21" },
               new { Year = @"^\d{4}", Month = @"\d{2}" }
           );

      Url:http://localhost:14039/home/index-2010-01-21

 

方法5:帶有命名空間,約束,待預設值的路由規則

函數頭:MapRoute( string name, string url, object defaults, object constraints, string[] namespaces);

        routes.MapRoute(
               "Rule1",
               "Admin/{controller}/{action}-{Year}-{Month}-{Day}",
               new { controller = "Home", action = "Index", Year = "2010", Month ="04", Day = "21" },
               new { Year = @"^\d{4}", Month = @"\d{2}" },
               new string[] { "MvcDemo.Controllers" }
           );

       Url:http://localhost:14039/Admin/home/index-2010-01-21

 

方法6:捕獲所有的路由

routes.MapRoute(
               "All", // 路由名稱
               "{*Vauler}", // 帶有參數的 URL
               new { controller = "Home", action = "Index", id =UrlParameter.Optional } // 參數預設值
           );

 

關於Global.asax剩餘部分的說明:

       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");是忽略這個規則的Url

   AreaRegistration.RegisterAllAreas();//註冊所有的Areas
      RegisterRoutes(RouteTable.Routes);//註冊我們寫的規則
      //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);//調試用語句,需要下載RouteDebug.dll,並添加引用!加入這句話後就可以測試Url路由了。

MVC中url路由規則

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.