2010-10-25 78 views
0

我不明白是怎麼以下的單元測試指令臨ASP.net MVC框架 - url.action

string links = ((HtmlHelper)null).PageLinks(2, 3, i => "Page" + i); 

映射到實際的代碼如下:

<%= Html.PageLinks((int)ViewData["CurrentPage"], (int)ViewData["TotalPages"], x=> Url.Action("List", new { page = x}))%>

的一部分令我困惑的是,如何...

i => "Page" + i 

正在測試以下內容:

x=> Url.Action("List", new { page = x}) 

回答

2

你應該張貼的PageLinks代碼尤爲明顯理解,但我想我知道什麼ID做呢(這是史蒂夫·桑德森MVC書嗎?)

從PageLinks其函數的第三個參數接收一個int參數(pageNumber)並返回一個字符串,這個函數會被輔助函數產生的每個鏈接調用,以獲得每個鏈接指向的URL。在您的代碼中,您正在使用Lambda表達式(http://msdn.microsoft.com/en-us/library/bb397687.aspx)定義此函數。

例如,當你打電話給你的助手在測試:

(string links = ((HtmlHelper)null).PageLinks(2, 3, i => "Page" + i);) 

你應該得到這樣的事情:

<a href='Page1'></a> <a href='Page2'></a> <a href='Page3'></a> 

通知每個鏈接的HREF如何變化,那你有什麼檢查結果以查看助手是否正在工作。

x=> Url.Action("List", new { page = x}) 

以同樣的方式工作,您的幫手爲每個需要生成的鏈接調用Url.Action。