日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【ASP.NET MVC】 路由机制:命名路由

發布時間:2024/4/15 asp.net 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ASP.NET MVC】 路由机制:命名路由 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先看一下命名路由和沒有命名的差別:

命名路由:

routes.MapRoute(name: "Test", // Route nameurl: "code/p/{action}/{id}", // URL with parametersdefaults: new { controller = "Section", action = "Index", id = UrlParameter.Optional } // Parameter defaults);


默認路由:

routes.MapRoute(Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults


ASP.NET 中的路由機制沒有要求路由具有名稱,而且大多數情況下沒有名稱的路由也能滿足大多數應用場合。通常情況下,為了生成一個URL(統一資源定位符),只需要抓取事先已經定義好的路由值,并把他們交給路由引擎,剩下的就有路由引擎來處理,正如我們要介紹的,在有些情況下,使用這種方法在選擇生成URL的路由時會可能產生二義性。但給路由命名卻可以解決這個問題。

?

下面我們注冊兩個路由:

routes.MapRoute(name: "Test", // Route nameurl: "code/p/{action}/{id}", // URL with parametersdefaults: new { controller = "Section", action = "Index", id = UrlParameter.Optional } );routes.MapRoute(name:"Default", // Route nameurl:"{controller}/{action}/{id}", // URL with parametersdefaults:new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

為了在視圖中生成一個指向每個路由的超鏈接,我們在Home下面的Index頁面上加入下面代碼

@Html.RouteLink("Test",new{controller="Section",action="Index",id=123}) @Html.RouteLink("Default",new{controller="Home",action="Index",id=123})

這里注意:上面兩個方法并不能確定使用哪個路由來生成URL,他們只提供了一些路由值,正如所期望的,第一個方法生成指向/code/p/Index/123的URL,第二個方法生成指向/Home/Index/123的URL.

對于上面的這些簡單實例而言,生成URL非常簡單,但是有些情形還是會令我們頭疼。

假設我們在路由列表的開始部分加入如下的頁面路由,為了使/aspx/Page.aspx/頁面處理/static/url

routes.MapPageRoute("new", "static/url", "~/aspx/SomePage.aspx");

注意我們在實驗中不能將這個路由放在路由列表的末尾,否則他不能匹配傳入的請求,我們就看不到我們想要的效果。為什么會這樣呢?因為默認路由會在他之前與我們前面的那兩個路由匹配,因此我們要把該路由放到路由列表的開始部分。
?

那么將上面的路由放到路由列表的開始位置會有說明變化呢?對于傳入的請求而言,該路由只能匹配URL為/static/url的請求,而不匹配任何其它的請求,這也正是我們想要的。我們看一下我們點擊上面兩個超鏈接返回的URL都是不可用的:

/static/url?controller=Section&action=Index&id=123

/static/url?controller=Home&action=Index&id=123

通常情況下,當使用路由機制生成URL時,我們提供的路由值被用來填充URL參數,但是我們可以看到上面這個路由根本沒有URL參數("/static/url"),因此他可以匹配每一個可能生成的URL,也就是我們上面兩個鏈接都匹配了這個路由,所以生成了沒有用的URL。

這時我們可以指定路由名稱,不僅可以避免二義性,甚至在某種程度上提高性能,因為路由引擎可以直接定位到指定的路由,并嘗試用它來生成URL。

在前面的實例中,我們生成了兩個鏈接,下面我們做些修改,就可以看到命名路由的優點了(下面的代碼使用了命名參數):

@Html.RouteLink(linkText:"route:test",routeName:"test",routeValues:new{controller="section",action="index",id=123}) @Html.RouteLink(linkText:"Default",routeName:"Default",routeValues:new {controller="Home",action="index",id=123})

這樣我們就可以正確找到路由了."人們的名字是他們命運的縮寫"。這句話同樣使用與生成URL的路由。

轉載于:https://www.cnblogs.com/wywnet/p/3415905.html

總結

以上是生活随笔為你收集整理的【ASP.NET MVC】 路由机制:命名路由的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。