Razor in ASP.NET MVC 3.0

Razor in ASP.NET MVC 3.0

ASP.NET MVC 3.0中,提供了新的View Engine:Razor,使用的方式和以往沒有差別很大,不過寫法卻顯得的更簡單俐落;以往費事的<% %>,被簡化成短短的@,如果需要宣告多行,則只需要利用@{}包起來就可以了!對我來說,最棒的是排版的時候漂亮超多XD

 

下圖是基本的Razor View:

@model 宣告該頁的Model型別

@Layout 宣告想要套用的MasterPage名稱(如果不需要套用就是null)

@View.Title 頁面標題

image

除了在頁面宣告之外,你還可以用一個更簡單的方式宣告所有頁面要套用的Layout,那就是利用_ViewStart.cshtml來宣告網站所有預設套用的頁面。_ViewStart.cshtml只會影響跟他同一層底下的目錄,所以如果你有使用area,可以在area下的Views中,重新指定_ViewStart.cshtml。

 SNAGHTML53f844

_ViewStart.cshtml除了用來指定Layout以外,一些需要共同處理的東西也可以在這裡設定,例如:設定CacheControl

SNAGHTML173cf85

在Master Page(其實在Razor中,一般的頁面和Master Page沒有特別區別,只是習慣用這種方式稱呼用來套版的頁面)中,以往使用ContentPlaceHolder來做為不同區塊的分隔,而在Razor則是以Body及Section做為切割

image

在套用的時候,Body的內容不需要額外處理,而Section則只需要用@section包起來即可!(需指定Section名稱)

image

Razor還有許多用法,像是@function,在頁面中可以自訂函數使用:


@functions {
    public static IHtmlString Print(int times, Func<int, object> template) {
        StringBuilder builder = new StringBuilder();
        for(int i = 0; i < times; i++) {
            builder.Append(template(i));
        }
        return new HtmlString(builder.ToString());
    }
}

@{
    View.Title = "Home Page";
}

<h2>@View.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
@Print(10, @<span>item: #@item</span>);
 

 

相關連結:

Introducing “Razor” – a new view engine for ASP.NET

ASP.NET MVC 3: Layouts with Razor

Inside Razor - Part 3 – Templates

 

Dotblogs 的標籤: ,