国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

ASP.NET MVC路徑選擇系統構建

開發 后端
本文深入討論asp.net mvc框架的路徑選擇(routing)架構及一些定制方式,可以將其用于應用中的一些更高級的場景。

從路徑選擇系統構建輸出的URL

在本文的前面,我說過ASP.NET MVC路徑選擇系統負責兩件事情:

把進來的URL映射到處理的Controllers/Actions上

幫著構建可以在以后用來回調Controllers/Actions的輸出到客戶端的URL(例如,表單提交, <  a href="">鏈接, 和 AJAX 調用等等)

URL路徑選擇系統有不少輔助方法和類,方便你在運行時動態查看和構建URL(你也可以直接對RouteTable的Route集合進行操作來查看URL)。

Html.ActionLink

在本博客系列的第一部分,我簡單地討論了Html.ActionLink()視圖輔助方法。它可以在視圖里使用,允許你動態地生成 <  a href=""> 超鏈接。比較酷的是,它可以使用MVC路徑選擇系統里定義的URL映射規則來生成這些URL。例如,下面2個Html.ActionLink 調用:

下面2個Html.ActionLink 調用 

automatically pick up the special Search results route rule we configured earlier in this post, and the "href" attribute they generate automatically reflect this: 會自動地使用我們在本貼子前面配置的的特殊查詢結果路徑規則,它們自動生成的href屬性反映了這個情況:

它們自動生成的href屬性反映了這個情況  

特別地,注意上面,Html.ActionLink的第二個調用自動地把page參數映射成URL的一部分(也注意,第一個調用省略了page參數值,因為它知道服務器端會自動提供默認值)。

ASP.NET MVC路徑:Url.Action

除了使用Html.ActionLink外,asp.net mvc還有個Url.Action()視圖輔助方法。該方法生成原生的字符串URL,然后你可以任何方式來使用它們。例如,下面的代碼片段:

下面的代碼片段  

會使用URL路徑選擇系統返回下面這個原生的URL(而不是包裝在 <  a href=""> 元素里):

會使用URL路徑選擇系統返回下面這個原生的URL 

ASP.NET MVC路徑:Controller.RedirectToAction

asp.net mvc還提供了Controller.RedirectToAction()輔助方法,你可以在控制器里使用來進行轉向操作(URL是使用URL路徑選擇系統計算出來的)。

例如,當在控制器里調用下面代碼時:

當在控制器里調用下面代碼時  

在內部,它會生成一個對Response.Redirect("/Search/Beverages")的調用。

DRY (別重復自己)

上述所有的輔助方法的好處在于它們允許我們避免在我們的控制器和視圖邏輯中硬寫URL。如果在后來我們決定改變查詢URL路徑映射規則,從"/Search/[query]/[page]" 改回到 "/Search/Results/[query]/[page]" 或者 "/Search/Results?query=[query]&page=[page]" ,我們只要在一個地方(我們的路徑注冊代碼中)做編輯,就可以輕松搞定。我們不需要改動視圖或控制器中的任何代碼,就可以撿起新的URL(這就堅持了“DRY原則”)。

使用Lambda表達式從路徑選擇系統構建輸出的URL

前面的URL輔助方法例子使用了VS 2008中VB和C#現在支持的新的匿名類型。在上面的例子中,我們使用了匿名類型來有效地傳入一串名稱/數值對,用以幫助映射URL(你可以把這想像為生成字典的一個比較干凈的方式)。

除了使用匿名類型以動態方式傳遞參數外, asp.net mvc框架還支持使用強類型機制創建action路徑的能力,這些強類型機制為URL輔助方法提供了編譯時檢查和intellisense。這是通過使用泛型和新的VB和C#對Lambda表達式的支持來實現的。

例如,下面這個匿名類型 ActionLink 調用:

 下面這個匿名類型 ActionLink 調用

也可以寫成:

 也可以寫成

除了寫起來簡短外,這第二個選項還有類型安全的好處,這意味著你得到對表達式的編譯時檢查以及Visual Studio的代碼intellisense(你還可以使用重構工具對它進行重構):

 這意味著你得到對表達式的編譯時檢查以及Visual Studio的代碼intellisense

注意上面,我們是如何使用intellisense挑選出我們想用的SearchController的Action方法的,以及參數是強類型的。生成的URL都是由asp.net mvc url路經選擇系統驅動的。

你也許在想,這到底是怎么回事呢?如果你還記得,8個月前,我在博客里討論Lambda表達式時,我談到了Lambda表達式既可以編譯出成代碼代理(delegate),也可以編譯成表達式樹對象,然后在運行時可以用來分析Lambda表達式。對于Html.ActionLink<  T> 輔助方法,我們使用這個表達式樹選項,然后在運行時分析對應的lambda,查出它調用的action方法以及相關的參數類型,在表達式中指定的名稱和值等。然后我們可以在MVC URL路徑選擇系統中使用這些信息, 返回合適的URL和相關聯的HTML。

重要注意事項: 當使用這Lambda表達式方法時,我們實際上從不運行對應的Controller action方法。例如,下面的代碼并不調用我們的SearchController中"Results" action方法:

下面的代碼并不調用我們的SearchController中"Results" action方法 

實際上,它只是返回這個HTML超鏈接:

 它只是返回這個HTML超鏈接

如果這個超鏈接被用戶點擊的話,它會向服務器發回一個請求,該請求會調用SearchController的Results action方法。

單元測試路徑

asp.net mvc框架的一個核心設計原則是促進很好的測試支持。 跟mvc框架的其他部分一樣,你可以輕松地單元測試路徑和路徑匹配規則。mvc路徑選擇系統可以獨立于asp.net生成實例和運行,這意味著你可以在任何單元測試庫里裝載和單元測試路徑模式(而不用啟動web服務器),可以使用任何單元測試框架(NUnit, MBUnit, MSTest等等)。

雖然你可以在你的單元測試中直接單元測試一個asp.net mvc應用的全局RouteTable映射集合,但一般來說,讓單元測試改變或者依賴于一個全局的狀態不是一個很好的主意。一個你可以使用的較好的模式是,把你的路徑注冊邏輯放在一個象下面這樣的RegisterRoutes()輔助方法中,對作為參數傳入的RouteCollection進行操作(注:我們也許會把這個模式在下個預覽版更新中做成默認的VS模板模式):

 對作為參數傳入的RouteCollection進行操作

然后,你可以編寫單元測試,創建自己的RouteCollection實例,調用Application的RegisterRoutes輔助方法,在其中注冊應用的路徑選擇規則。然后,你可以向應用發出模擬請求,核實這些請求確有注冊了的正確的控制器和action方法,而不用擔心任何副作用:

創建自己的RouteCollection實例  

希望這個貼子提供了關于asp.net mvc路徑選擇架構工作原理的一些細節,以及你如何可以使用它來定制發布在你的asp.net mvc應用中的url的結構和布局。

在默認情形下,在你創建一個新的asp.net mvc Web應用時,它會預先定義一個你可以使用的默認的 /[controller]/[action]/[id] 路徑選擇規則,而不必手工配置或啟用什么。這應該允許你不用注冊你自己的自定義路徑選擇規則,就可以建造許多應用。但希望上面的內容示范了,如果你想對你自己的url格式做自定義結構的話,做起來并不難, mvc框架對此提供了許多的功能和靈活性。

【編輯推薦】

  1. 如何在IIS6.0中部署asp.net mvc程序
  2. 用Winform傻瓜式搭建asp.net mvc框架
  3. ASP.NET Session失效的編程思路
  4. ASP.NET Session 狀態的存儲
  5. 了解ASP.NET Web應用程序模型

 

責任編輯:book05 來源: blog.joycode
相關推薦

2009-07-24 10:55:00

asp.net mvc

2009-07-24 11:20:43

ASP.NET MVC

2009-07-31 12:43:59

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-20 10:53:59

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-22 10:13:31

異步ActionASP.NET MVC

2009-04-01 12:00:43

ASP.NETMVC

2009-07-20 15:44:32

ASP.NET MVC

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-07-23 11:33:18

2009-07-29 09:17:12

jQuery刪除

2010-06-23 15:44:03

ASP.NET MVC

2009-07-24 11:33:12

MVC單元測試ASP.NET

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2010-03-19 09:17:16

ASP.NET MVC
點贊
收藏

51CTO技術棧公眾號

99re6这里只有精品| 亚洲欧洲国产日本综合| 国产成人91久久精品| av福利导福航大全在线| 性做久久久久久久免费看| 国模杨依粉嫩蝴蝶150p| 韩国av一区二区三区四区 | 欧美激情久久久| 我爱我色成人网| 亚洲精品99久久久久| a视频在线播放| 欧美丰满高潮xxxx喷水动漫| 狠狠v欧美ⅴ日韩v亚洲v大胸 | 精品日本一线二线三线不卡| 日本精品在线| 欧美精品乱码久久久久久按摩| 成人午夜影视| 欧亚一区二区三区| 五月香视频在线观看| 7777精品伊人久久久大香线蕉的 | 免费黄色在线观看| 欧美性感一区二区三区| www.亚洲资源| 69p69国产精品| 污污视频在线看| 亚洲欧美日韩天堂一区二区| 偷拍中文亚洲欧美动漫| 久久天堂av综合合色| 成人免费直播在线| 国产精品国产三级国产aⅴ浪潮| 久久av电影| 91视频国产高清| 国产麻豆综合| 在线一区高清| 久久亚洲捆绑美女| 九色福利视频| 欧美日韩精品福利| 国产乱码在线| 日韩中文字幕在线观看| julia中文字幕一区二区99在线| 欧日韩不卡在线视频| 一区二区在线影院| 午夜精品一区二区在线观看的 | 欧美xxx网站| 亚洲欧美色图片| 欧美美乳视频| 日本三级韩国三级久久| 污污的网站在线看| 精品亚洲一区二区三区在线播放| 日本a级片电影一区二区| 久久亚洲资源| 97成人精品视频在线观看| 欧美第一视频| 色乱码一区二区三区88 | a在线免费观看| 欧美sm极限捆绑bd| 国产一区久久精品| 日韩一区二区欧美| 久久蜜桃av| 成人黄色av网站| 中文字幕欧美日韩一区| 欧美性理论片在线观看片免费| 国产欧美精品久久久| 亚洲一区二区毛片| 日本不卡免费播放| 成人免费在线视频网站| 国产欧美一区二区三区沐欲| 特黄国产免费播放| 亚洲护士老师的毛茸茸最新章节 | 完全免费av在线播放| 欧美日产国产成人免费图片| 欧美日韩国产免费观看| 日韩一级片播放| 日韩av一区二区在线| 综合色就爱涩涩涩综合婷婷| 五月天综合婷婷| 欧美性受xxxx| 欧美韩一区二区| 欧美做受777cos| 欧美精品自拍偷拍| 91精品国产成人观看| 少妇久久久久久被弄到高潮| 国产精品网站在线观看| 精品av中文字幕在线毛片| 亚洲精品美女在线观看播放| 精品在线网站观看| 久久精品人成| 一区二区三区四区不卡视频| 欧美人与性动交α欧美精品图片| 国产精品电影一区| 精品一区二区免费在线观看| 亚洲黄色av网址| 精品亚洲夜色av98在线观看| 韩日视频一区| 一级日本免费的| 欧美激情在线视频二区| 国产.欧美.日韩| avtt亚洲| 亚洲va韩国va欧美va精四季| 亚洲综合视频在线| 亚洲日本网址| 欧美这里只有精品| 国产午夜精品久久久久久免费视| 久草精品在线播放| 亚洲福利视频在线| 国产美女av一区二区三区| 成人免费在线播放| 欧美第一在线视频| 国产视频精品va久久久久久| 911精品美国片911久久久| 国产v亚洲v天堂无码久久久| 亚洲国产成人久久综合| 国产精品激情| 污视频在线观看网站| 88xx成人精品| 久久久蜜臀国产一区二区| 国产私拍福利精品视频二区| 影音欧美亚洲| 亚洲精品成a人在线观看| 一区在线播放| melody高清在线观看| 91黄色国产视频| 欧美性感美女h网站在线观看免费| 久久久伦理片| 尤物国产在线观看| 夜夜春成人影院| www99avcom| 欧美一级视频一区二区| 最新日韩在线视频| 日韩激情免费| 国产在线视频网址| 黄色国产精品一区二区三区| 91精品国产色综合久久不卡蜜臀| 午夜一区不卡| 天堂8中文在线最新版在线| 9191国产视频| 久久国产精品亚洲| 亚洲国产精品成人综合| 精品三级av| 最新中文字幕av专区| 成人av在线亚洲| 欧美午夜片欧美片在线观看| 狠狠入ady亚洲精品| a视频在线播放| 超碰10000| 欧美激情乱人伦一区| 亚洲精品欧美激情| 国内精品福利| 在线观看爽视频| 久久久噜噜噜www成人网| 久久久久成人精品| 天天色综合天天| 日韩精品一级中文字幕精品视频免费观看| 丁香花高清在线观看完整版| www.日本少妇| 国产精品久久电影观看| 欧美精品成人一区二区三区四区| 国内一区二区在线| 日韩精品一区二区三区中文| 久草在线国产| 精品一区二区三区国产| 在线精品播放av| 亚洲日本va在线观看| 国产欧美一级| 亚洲精品三区| 夜色福利资源站www国产在线视频 夜色资源站国产www在线视频 | 久久99精品久久久久久久青青日本 | 9191国语精品高清在线| 在线观看麻豆| 狠狠噜天天噜日日噜| 午夜精品福利电影| 都市激情亚洲色图| 九色综合国产一区二区三区| 伊色综合久久之综合久久| 在线宅男视频| 亚洲一区二区在| 性色av一区二区咪爱| 欧美日韩美女一区二区| 成人ar影院免费观看视频| 色综合天天爱| 日韩电影免费观看高清完整版| jlzzjlzz欧美| 亚洲午夜精品一区二区| 韩国一区二区电影| 欧美v国产在线一区二区三区| 国产人伦精品一区二区| 99综合精品| 欧美在线关看| 国产蜜臀在线| 中文字幕视频在线| 男人添女人荫蒂免费视频| 5g国产欧美日韩视频| 久热在线中文字幕色999舞| 91福利在线观看| 国产女主播视频一区二区| 蜜桃视频一区| 国产一区二区三区电影在线观看| 欧美日韩免费看片| 国产片在线观看| 九七影院97影院理论片免费|