在錯誤中學習ASP.NET MVC 第 18 篇 - 認識View - 自訂與擴充Helper

 Razor提供了很多好用的Helper,但還是沒辦法滿足所有專案的需求,所以這篇就來介紹如何自訂以及擴充Helper,下面以新增<h5>標籤為例。

自訂全站共用的Helper

專案按右鍵加入App_Code資料夾





App_Code資料夾按右鍵加入檢視,並將檔名輸入成你想要用的helper名稱



使用@helper 方法名稱,定義自己的方法以及傳入的參數



在一般檢視裡就可以叫用囉,@自訂的Helper名稱.自訂的方法,編輯完記得重建方案,這樣在檢視裡面才叫用得到。



是說<h5>就算自己打也還蠻快的啦,不過有時候套用設計師的版的時候就會想殺人,例如:

<div class="headline">
  <h5>Title</h5>
</div>

只要每次用到<h5>外面就一定要多加<div>包起來,就不可能每次都自己打html了吧,要是以前我應該是不會乖乖打,只是會一直複製貼上而已XD,但透過自訂的Helper就能輕鬆解決這個問題了,而且寫法很簡單,使用起來也很方便。



擴充Helper

再來如果想要擴充HtmlHelper要怎麼做呢,以上面的例子來改寫
請在專案下新增一個"Helpers"的資料夾,不叫這名字也沒關係,主要是要存放相關的Helper類別



修改成靜態類別,再來宣告靜態的方法,回傳型別是MvcHtmlString,而且第一個參數一定要宣告this HtmlHelper型別,但呼叫的時候不需要傳入



在View裡面叫用剛剛宣告的擴充方法,記得要using命名空間,然後使用@Html.自定義的方法,如果想要顯示方法以及參數的說明請參考這篇,使用文件註解標籤。



若是遇到需要動態產生html的情況可以使用TagBuilder來建立html



如果覺得每個View都要using自訂的hepler命名空間太麻煩,可以參考這篇的Web.config設定。

留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明