Pro ASP.net MVC框架代码问题

时间:2010-10-25 14:36:16

标签: asp.net-mvc

Pro ASP.NET MVC Framework第110页的以下行对我没有意义:

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

我不明白上述陈述中null做了什么?

我无法做到...... HtmlHelper.PageLinks(....)

PageLinks方法是一种扩展方法吗?

1 个答案:

答案 0 :(得分:3)

它在HtmlHelper的null“实例”上调用扩展方法。可能在范围内没有HtmlHelper,并且作者不能为创建一个HtmlHelper而烦恼。 PageLinks方法本身不需要引用HtmlHelper,因此作者有效地传递null

如果您考虑扩展方法的签名:

public static string PageLinks
    (this HtmlHelper helper, int val1, int val2, Func<someType,string> func)

它只是意味着参数帮助器将作为null传递。这是一个奇怪的结构,特别是在一本书中。它有一种非常黑的味道。

可以重新调整呼叫(可能更清楚):

AuthorsHtmlExtensionsClass.PageLinks(null, 2, 3, i => "Page" + i)

只是阅读同一本书的MVC2副本,(这是SportsStore应用程序的结尾,对吗?),Steven已将代码更改为:

HtmlHelper html=null;
...
html.PageLinks(...)

我认为这有点清楚。