ASP.NET MVC 中出現的 方法 中的 this 關鍵字 用法 (this HtmlHelper helper)

來源:互聯網
上載者:User

最近在看ASP.NET 的MVC2編程模型,發現裡面有一種很奇怪的this用法,以前從沒有見過,經過2個小時的翻閱資料尋找終於得出了結論,和大家分享一下(可能理解有不全面的地方,希望大家指正)

public static string ScheduleEntries(this HtmlHelper helper, ...)

這個是我在一個外國論壇上搜到的問題,下面有句回答是:

The way it works for MVC is that Html in the view is a property of HtmlHelper type on the ViewPage class.

我大概理解了下,意思好像是說 “把視圖中的HTML作為一個htmlhelper類型的屬性”,這裡面的Html只什麼一直不是很明白,猜測應該是指只當前對象吧,也就是把當前對象作為HtmlHelper的一個參數。通過這句話我只能理解到這裡了。

後來又看到了一個MVC寫的分頁控制項,裡面也有同樣的寫法:

public static IPagedList<T> ToPagedList<T>(this IEnumerable<T> source, int pageIndex, int pageSize, int totalCount){return new PagedList<T>(source, pageIndex, pageSize, totalCount);}

然後看了下是怎麼調用該方法的,發現只要是繼承了IEnumerable<T>介面的都可以調用該方法,並且第一個參數隱藏了,這樣就比較清晰了,這裡的ToPagedList<T>(…)方法被添加到繼承介面IEnumerable<T>的類中,此方法帶有this的那個參數則自動預設為擁有該方法的當前對象,理解了這些就可以在方法體中大膽的發揮了。

private IList<Product> allProducts = new List<Product>();IpagedList<Product> ProductList this.allProducts.ToPagedList(currentPageIndex, defaultPageSize)

上面兩行代碼是對如何調用擁有this關鍵字方法的舉例,希望能給大家起到協助,協助大家理解。有不對的地方,也歡迎大家指正.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.