亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中Route組件如何使用

發布時間:2021-07-20 11:24:43 來源:億速云 閱讀:208 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關ASP.NET中Route組件如何使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

RouteBase職責明確:從請求中獲取數據,及根據數據生成虛擬路徑。它只有兩個方法:GetRouteData和GetVirtualPath,擴展起來非常容易,各種“模式”均可以體現出來。例如DomainRoute和FormatRoute都是使用了裝飾器模式,在內部RouteBase的GetRouteData或GetVirtualPath方法的“前后”再加上一些邏輯(例如DomainRoute中的域名匹配或生成)。有趣的是,在幾個月前我還寫過一個InterceptRoute類:

public class InterceptRoute : RouteBase  {      public InterceptRoute(RouteBase innerRoute, IList interceptors)      {          this.InnerRoute = innerRoute;          this.Interceptors = new InterceptorCollection(interceptors);      }       public RouteBase InnerRoute { get; private set; }       public InterceptorCollection Interceptors { get; private set; }      ...  }

在很多時候,能夠像一個組件中插入“橫切”的邏輯總是很有用的(例如昨天剛提的NHibernate Interceptor),而上面這個便是在Route規則的各方法前后插入各種邏輯。提供這個邏輯的便是IRouteInterceptor對象,它有四個方法:

PreGetRouteData

PostGetRouteData

PreGetVirtualPath

PostGetVirtualPath

從它們的名稱上您也一定可以看得出它們是做什么的。從理論上來說,無論是DomainRoute還是FormatRoute,只要是為現有方法補充前/后置邏輯的擴展,都可以通過提供IRouteInterceptor來實現。不過我除了DomainRoute以外,還真沒發現其他的使用環境。這個InterceptRoute似乎也是娛樂價值大于實際價值。因此就在這里一提,等以后忽然發現真有用了我們再拿出來遛遛。

除了裝飾器模式/InterceptRoute之外,我還曾經想過構建另一種“結構性”(如InterceptRoute一樣,本身不提供實際用途)的Route擴展,那就是利用了組合模式的Route規則。利用組合模式,我們可以將多個RouteBase對象聚合起來,并且在GetRouteData或GetVirtualPath的時候將職責委派給這些對象。事實上,它的職責就好似Routing框架本身所帶的RouteCollection一樣——當然,之前我們也談過,RouteCollection的邏輯并不那么單純。

假設我們已經有了這樣一個CompositeRoute對象收集了一堆Route規則,那么什么時候會需要這樣的場景呢?其實DomainRoute就可以是這樣的,因為“一個域名下有多個Route規則”簡直是天經地義的事情。但其實事情并沒有那么簡單,個中原因便是我們昨天所談論的“命名問題”。

由于在配置Route規則的時候,我們要為每個Route提供一個名稱——但是這個名稱只是對RouteCollection才有效果,確切地說,只有RouteTable.Routes這個RouteCollection實例才會用到這一點。如此的話,使用CompositeRoute勢必將原本能夠有名稱的多個Route規則捆綁在了一起,我們在生成URL的時候就無法通過名稱定位到特定的Route上了。

由于RouteCollection中釋放接口有限(也不是開源的,這意味著我們無法改造它),這一點幾乎無法通過自定義邏輯的方式來改進。因此在我看來,CompositeRoute幾乎無法用在任何場景上——DomainRoute當然也不會使用這種設計方式了。

關于ASP.NET中Route組件如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西昌市| 定结县| 商水县| 龙门县| 琼中| 昌江| 尼勒克县| 镇坪县| 华蓥市| 嘉祥县| 濮阳市| 五大连池市| 民权县| 英超| 辉县市| 凤城市| 大悟县| 曲沃县| 瓮安县| 固阳县| 涟源市| 镇康县| 墨竹工卡县| 东至县| 德化县| 都昌县| 宿迁市| 新泰市| 灵璧县| 连城县| 新密市| 忻州市| 紫云| 竹山县| 社旗县| 尚志市| 三河市| 保亭| 德化县| 临猗县| 十堰市|