//直接方法重載+匿名對象
//最基礎的路由規則,也是默認的路由規則
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
//構造路由然後添加
Route myroute = new Route("{controller}/{action}", new MvcRouteHandler());
routes.Add("MyRoute0", myroute);
//添加命名空間的路由
//在Action裏面定義了一個參數"catchall"用來接收Url中除了Id之外其他所有的參數值
//catchall 這個就可以實現了多個參數的傳遞
//跨命名空間路由
routes.MapRoute(
"AddContollerRoute",
"Home/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "URLsAndRoutes.AdditionalControllers" }
);
routes.MapRoute(
"MyRoute1",
"{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "URLsAndRoutes.Controllers" }
);
//關於{id}後面增加{*catchall}這個配置之後,在action的參數ID之後需要增加 string catchall這個參數來獲取除ID之外的所有參數,案例如下:
public ActionResult abcTest(string id,string catchall)
{
string temp = id;
string tt = catchall;
return Content(id);
}
//可變長度路由 + 正則表達式匹配路由
//正則表達式 ,在路由配置中,我們做了這樣的規則,只匹配Controller名稱以H開頭的
routes.MapRoute(
"MyRoute2",
"{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = "^H.*", action = "^Index$|^About$" },
new[] { "URLsAndRoutes.Controllers" }
);
//指定請求方法
routes.MapRoute("MyRoute3", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = "^H.*", action = "Index|About", httpMethod = new HttpMethodConstraint("GET") },
new[] { "URLsAndRoutes.Controllers" }
);