ASP.NET MVC 路由規則及簡述

//以下所有的自定義路由規則必須在默認路由規則之前,否則不起效果


//直接方法重載+匿名對象

//最基礎的路由規則,也是默認的路由規則
            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" }
            );


發佈了30 篇原創文章 · 獲贊 7 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章