tags:

views:

46

answers:

1

The following line on page 110 of Pro ASP.NET MVC Framework does not make sense to me:

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

I don't understand what is the null doing in the above statement?

I was unable to do .. HtmlHelper.PageLinks(....)

Is the PageLinks Method an extension method?

+3  A: 

It's invoking an extension method on a null "instance" of an HtmlHelper. Probably there's no HtmlHelper in scope and the author can't be bothered to create one. The PageLinks method itself will not require a reference to an HtmlHelper, so effectively the author is passing null.

If you think about the signature of the extension method:

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

It simply means that the parameter helper will be passed as null. It's a weird construct though, particularly in a book. It's got a really hacky smell to it.

The call could be restated (perhaps more clearly) as:

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

Just reading though my MVC2 copy of the same book, (it's the end of the SportsStore application, right?), Steven has changed the code to:

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

Which I suppose is a little clearer.

spender
Thank you !!!!!
dotnet-practitioner