System.Web.Routing-進階篇

上面介紹的是最簡單的一種定義方式。當然我們可以建立更復雜的規則。其中就包括設定規則的默認值以及設定規則的正則表達式。

UrlRouting高級應用

預計效果:

當我訪問/a/b.aspx時就會轉到Default.aspx?category=a&action=b在頁面上顯示
category:a
action:b

亦如果我訪問/chsword/xxxx.aspx就會轉到Default.aspx?category
=chsword&action=xxxx就會顯示
category:chsword

action:xxxx

 

如果訪問/chsword/就會轉到 Default.aspx?category=chsword&action=index就會顯示

 category:chsword

action:index

 

 首先我建立一個Route

當然IHttpHandler的處理方式也要有所改變

爲了方便查看我使用了下方法:

  

即/a/b.aspx是映射到Default.aspx?category=a&action=b

在Default.aspx中寫如下代碼:

  

以顯示傳入的參數。

如果在IIS中設置Index.aspx時就算輸入/a/也會訪問到/a/index.aspx,即默認的會按RouteValueDictionary中設置的值自動補全

UrlRouting使用正則表達式規則

UrlRouting在定義的時候也可以按正則的規則來進行定義。

以上代碼規定了action只能是數字則訪問/a/1.chs可以正常訪問。

而訪問/a/b.chs則會顯示未找到資源。

 

當然這是裏可以使用更高級的正則表達式。

UrlRouting的技巧

排除UrlRouting的方法:

System.Web.Routing默認提供了一個IRouteHandlerStopRoutingHandler Class,經過它處理的URL不會被做任何處理

通常使用方法如下:

routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));

 

RouteHandler工廠:

其實IRouteHandler可以實現一個RouteHandler的簡單工廠。

 規定HTTP verbs,這裏要使用System.Web.Routing中的HttpMethodConstraint

Demo程序代碼下載:

 http://files.cnblogs.com/chsword/WebApplication3.rar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章