Pro ASP.net MVC框架 - url.action

时间:2010-10-25 15:16:52

标签: asp.net-mvc

我不明白以下单元测试指令

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}))%&gt;

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

i => "Page" + i

正在测试以下内容:

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

1 个答案:

答案 0 :(得分:2)

您应该发布PageLinks代码以获取beter Understanding,但我想我知道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。