[Asp.Net MVC] Razor Engine

Posted by Harry Chang on March 6, 2017

Razor 是MVC 裡面很重要的View Engine,我們在MVC裡面可以很直覺的Return「.cshtml」或是「.vbhtml」的檢視畫面,

但若不在MVC架構上時,該如何Render Razor View 呢?

RazorEngine 可以幫助我們在非MVC架構上,又需要Render Razor View 時,

可以幫助我們Compile Razor View 轉成標準的Html,來看看該如何使用吧!

首先,先到Nuget安裝「RazorEngine」,

接下來很簡單,只要把檔案丟給RazorEngine 就可以了,如下:

1
2
    var template = File.ReadAllText($@"{ AppDomain.CurrentDomain.BaseDirectory}\Areas\Start\Views\Home\RazorView1.cshtml");
    var html =  Engine.Razor.RunCompile(template, "templateName");

這樣就可以這樣就可以把Razor View 轉換成html了,

當然我們一樣可以給ViewModel,程式碼如下:

1
2
3
    ViewModel model = new ViewModel();
    var template = File.ReadAllText($@"{ AppDomain.CurrentDomain.BaseDirectory}\Areas\Start\Views\Home\RazorView1.cshtml");
    Engine.Razor.RunCompile(template, "templateName", null, model);

另外,他也可以設定View Config ,

1
2
3
4
5
6
7
8
9
10
11
12
    ViewModel model = new ViewModel();

    var template = File.ReadAllText($@"{ AppDomain.CurrentDomain.BaseDirectory}\Areas\Start\Views\Home\RazorView1.cshtml");

    var config = new TemplateServiceConfiguration();
    //加入Razor View Config
    config.Namespaces.Add("Kendo.Mvc.UI");
    config.TemplateManager = new DelegateTemplateManager();

    var service = RazorEngineService.Create(config);

    string html = service.RunCompile(template, "templateName", null, todoModel);

RazorEngine 還有許多不一樣的設定,包含Cache 以提升效能,有興趣的朋友可以再深入研究唷!



icon_wechat.png