在MVC的邏輯代碼里,Controller和Action是必須的,但是在網址里,並不需要完全體現Controller和Action。比如我們經常希望看到http://localhost/About而不是http://localhost/Home/About。 預設的路由規則 新建MVC應用程式後,G ...
在MVC的邏輯代碼里,Controller和Action是必須的,但是在網址里,並不需要完全體現Controller和Action。比如我們經常希望看到http://localhost/About而不是http://localhost/Home/About。
預設的路由規則
新建MVC應用程式後,Global.asax里預設註冊的路由規則是:
?
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );
routes.MapRoute(
"Default" , // Route name
"{controller}/{action}/{id}" , // URL with parameters
new { controller = "Home" , action = "Index" , id = UrlParameter.Optional } // Parameter defaults
);
}
|
我們可以定義自己的路由規則。
定義短網址
我們定義一個可以用http://localhost/About等同於http://localhost/Home/About的路由規則:
?
routes.MapRoute(
"ShortAbout" ,
"About" ,
new { controller = "Home" , action= "About" }
);
|
此時訪問http://localhost/About和http://localhost/Home/About是一樣的。
以上語句只定義了一個短網址,為了普遍性,可以這樣定義路由規則:
?
routes.MapRoute(
"ActionOnly" ,
"{action}/{id}" ,
new { controller = "Home" , action = "About" , id = UrlParameter.Optional }
);
|
為了減少對其他Controller下預設Action(URL無Action)的影響,可對Action作限制:
?
routes.MapRoute(
"ActionOnly" ,
"{action}/{id}" ,
new { controller = "Home" , action = "Index" , id = UrlParameter.Optional },
new { action = "About|Index" }
);
|