[ASP.NET MVC]預編譯Razor Helper Method

會用預編譯不只是為了讓第一次網站執行時比較快速外,還有很多的原因,如事先發現View的編譯錯誤、讓客戶拿不到HTML,還有更重要的可以將View一同編譯到底層組件,將View當成組件使用,本篇說明如何將Razor的Helper Method預編譯到dll中,讓其他的專案也可以使用。

 

對Razor的一些說明可以看小弟的其他文章

[ASP.NET MVC]Razor Views 預編譯(Pre-Compile)[1]-加快第一次執行回應速度

[ASP.NET MVC]Razor Views 預編譯(Pre-Compile)[2]-獨立View並讓新舊View共存

 

什麼是Razor Helper Method?

Razor Helper Method是可以將一些HTML Tag與一些判斷組成一個Method,方便重覆使用與減化操作。

如封裝YouTube需要的Tag

image

在View中可以方便使用

image

Razor Helper Method的詳細使用可以參考ASP.NET MVC 3 and the @helper syntax within Razor

但是因為Razor Helper Method是放在.cshtml或.vbhtml中,預設的情況如果想在其他專案中使用,必需以複製檔案的方式到別的專案中,並不是一個好方式,所以小弟習慣將常用且通用的功能放到底層模組中,搭配NuGet,就可以很方便的在不同的專案中使用。

NuGet的說明可以參考小弟的NuGet系列文章

 

預編譯Razor Helper Method

Razor Helper Method與一般的頁面的預編譯有一些不同,多了幾個步驟,以下是設定方式:

 

1.安裝Visual Studio Razor Generator Extension

 

2.新增共用模組專案

共用模組的專案範本是不是ASP.NET MVC到無所謂,使用類別庫專案範本也可以,但是使用類別庫專案要在專案中放web.confg,讓IDE可以找到Web相關設定

image

web.config的內容也不用多,只要跟下面的一樣就可以了(可以直接複製MVC專案的web.config,刪除不必要的)。

image

 

3.新增空白.cshtml,以Video.cshtml為例。

 

4.在Viedo.cshtml的屬性頁中自訂工具輸入RazorGenerator,自訂工具命名空間輸入System.Web.Mvc,輸入完後會產生Video.generated.cs檔案

image

為什麼自訂工具命名空間要輸入System.Web.Mvc呢?

因為我覺得在使用的時候還要設定namespace很麻煩,因為System.Web.Mvc是預設會載入的namespace,所以設定System.Web.Mvc可以省下設定,如果不喜歡可以自行輸入或者不輸入使用預設值。

載入namespace的方式可以參考 ASP.NET MVC 3 使用 Razor 如何在 Web.config 宣告預設的 Namespaces – demoshop

 

5.Viedo.cshtml中的第一行輸入@* Generator:WebPagesHelper *@,這是告訢RazorGenerator使用那一種模式去產生檔案,WebPagesHelper就是Razor Helper使用的模式。

image

 

6.編譯,沒有錯誤就大功告成啦。

 

使用

使用很簡單,只要將dll加入參考就可以了。

image

在任何的View中就可以使已經寫好且共用的Razor Helper Method。

image


2012/3/28 00:45 | 閱讀數 : 8703 1 人推薦 我要推薦 | 2 Comments | 文章分類 : Web 訂閱


回覆

# re: [ASP.NET MVC]預編譯Razor Helper Method, Posted by gattaca on 2012/4/5 下午 06:12  回覆

這樣美工很難調整耶,

這篇文章也許是個方向,

http://www.cnblogs.com/Mainz/archive/2012/03/06/2382653.html

# re: [ASP.NET MVC]預編譯Razor Helper Method, Posted by 黃偉榮 on 2012/4/6 上午 12:25  回覆

謝謝提供分享,當模組化有模組化的好處,在使用上會方便很多,但模組化後又要可以客製UI,那又是一門很大的學問啦?我最多只有用參數與CSS去改變UI而以。

發表回覆

標題: *
姓名: *
Email: (將不會被顯示)
Url:
回覆: *
登入後使用進階評論
Please add 3 and 6 and type the answer here:

標籤

more tags...

每月文章

文章分類

開發資源

最新回覆