設定url路由
url路徑中,大括號{}內部的代表引數。/作為分割符,不再大括號內的則作為常量。值得注意的是,和作為2個關鍵字由mvc路由控制,如果確實需要用這個名字命名引數,可以在前面加上@,例如。
預設的設定路由在global.asax檔案中
public static void registerroutes(routecollection routes)方法
routes.maproute(
"default", // route name
"//", // url with parameters
new // parameter defaults
new 是maproute中的預設值,意思就是什麼都不輸入的時候,controller的值和action的值也是必須有值的。
controller代表控制器,action代表這個控制器中的方法。必須要指定預設的controller和action,不然會報錯。
routes.maproute(
"default", // route name
"//", // url with parameters
new // parameter defaults
實際上是以下方法的一種簡寫形式:
route myroute = new route("//", new mvcroutehandler())
defaults = new routevaluedictionary( new //", // url with parameters
new
routes.maproute(
"specials", // route name
"dailyspecials/", // url with parameters
new // parameter defaults
這裡的specials將不會被匹配到。
url路由匹配的時候只匹配路徑部分,網域名稱和querystring不會被匹配到。
路由約束
可以使用正規表示式對引數進行驗證約束
routes.add(new route("articles/", new mvcroutehandler())
defaults = new routevaluedictionary(
new
constraints = new routevaluedictionary(new ",id22=@"\d" })
上面部分可以簡寫為如下**:
routes.maproute(null, "articles/",
new ,
new ",id22=@"\d" }
不定長度的路徑
使用*號匹配不定長度。
routes.maproute(null, "articles/",
new
可以匹配/articles/science/paleontology/dinosaurs/stegosaurus
匹配硬碟上的檔案
儘管設定了路由,但是如果在一些特殊的情況下,硬碟上真實存在的檔案和路由的url一致,這時系統會處理硬碟真實存在的檔案,而無視路由的存在。
arearegistration.registerallareas();
routetable.routes.routeexistingfiles = true;
registerroutes(routetable.routes);
routetable.routes.routeexistingfiles預設是false。
這樣設定了,就算檔案真實存在都會按照路由的方式處理。除了下面2種情況:
1.沒有任何匹配的路由。則仍然按照真實檔案處理。
2.使用了ignoreroute(),無視了一些路由。
MVC 路由 概述
設定url路由 url路徑中,大括號 內部的代表引數。作為分割符,不再大括號內的則作為常量。值得注意的是,和作為2個關鍵字由mvc路由控制,如果確實需要用這個名字命名引數,可以在前面加上 例如。預設的設定路由在global.asax檔案中 public static void registerrou...
MVC路由規則
路由解析過程 這是routing元件的兩個重要的作用!例項一 系統預設提供的路由格式,下面是系統給的預設 public static void registerroutes routecollection routes 2 axd 4 5 routes.maproute 6 default 路由名稱...
MVC雜記 路由
在學習mvc的過程中,記錄一些基礎但很必要的東西。學習mvc很多同學都喜歡使用預設的路由配置,而不關心怎麼去利用它實現一些複雜的或者自定義的配置,下面結合msdn一起學習一下 1.mvc路由有什麼用處?2.路由定義的 和非路由定義的 有什麼區別?答 在不使用路由的 asp.net 應用程式中,對 u...