2010-10-25 68 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。