2011-06-27 107 views
2

我買了親asp.net mvc2框架書。我被困在第122頁。我無法理解它爲什麼有效。請解釋爲什麼這個c#擴展方法工作

我已經通過電子郵件發送作者,沒有收到任何迴應。這裏是代碼,有人可以向我解釋爲什麼它可以工作。

public static class PagingHelpers 
{ 
    public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl) 
    { 
     StringBuilder result = new StringBuilder(); 

     for (int i = 1; i <= pagingInfo.TotalPages; i++) 
     { 
      TagBuilder tag = new TagBuilder("a"); 
      tag.MergeAttribute("href", pageUrl(i)); 

      tag.InnerHtml = i.ToString(); 

      if (i == pagingInfo.CurrentPage) 
       tag.AddCssClass("selected"); 

      result.AppendLine(tag.ToString()); 
     } 

     return MvcHtmlString.Create(result.ToString()); 
    } 
} 

這種PageLinks helper方法需要3個參數,但後來在書中,當筆者把它稱爲,

<%: Html.PageLinks(
     new PagingInfo { CurrentPage = 2, TotalItems = 28, ItemsPerPage = 10 }, 
     i => Url.Action("List", new{ page = i}) 
) %> 

筆者只在2個參數傳遞,的HtmlHelper缺少HTML,但羅納爾多,也很想工作。我無法弄清楚爲什麼,請幫助,謝謝。

回答

0

由於第一個參數定義爲< 這個類型名稱>與通常情況相反,編譯器知道以第一個參數爲您自動處理的方式構建它,因此您只需要擔心這些參數如果有的話。