體驗ASP.NET MVC 3中的Razor特性
1 閑話ASP.NET MVC 3 beta
不知道不覺MVC3更新了好幾次了。。。因為一直在弄Silverlight的開發沒有時間關注ASP.NET MVC.之前出preview 的時候就看了園子里的一些文章。
但是總覺得"不咋地",依賴注入早就有一套了,全局攔截器也就那么回事。。好像都沒有對開發效率有太大的提升。。。(一己之見.目前正在學習MVC3BEAT的DI)。
除了RAZOR...
好吧。 現在開始動手吧!
2開工
2.1目錄
在_ViewStart.cshtml中指定
StartPage.Layout 會在程序啟動時,預先加載這個頁面。
Layout = "~/Views/Shared/_Layout.cshtml";
}
2.2實現框架頁
_Layout.cshtml中
<html>
<head>
<title>@View.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
</head>
<body>
@*模板頁*@
<div>
<fieldset>
<legend>Main</legend>
@RenderBody()
</fieldset>
<fieldset>
<legend>底部footer</legend>
@RenderSection("footer" );
</fieldset>
</div>
</body>
</html>
@RenderBody() 呈現主體。
@RenderSection("footer" ); 呈現部分:如底部的版權。
在Index.cshtml中
copyrght@@facingwaller
}
2.3顯示 view里的變量和顯示control里的變量
顯示頁面里定義的
顯示控制器
control里的定義:
view中的顯示
2.4其他一些常用寫法
VIEW中
頁面上的變量 use view variable: @@variable=@variable
<br />
來自控制器的 use Controller variable:@View.variable
<br />
循環嵌套HTML Loops and Nested HTML Sample
@foreach (var p in words) {
<big>@p ..</big>
}
<br />
使用if else
@if (IsTrue) {
<b>@@IsTrue is @IsTrue</b>
} else {
<b>@@IsTrue is @IsTrue</b>
}
<br />
多行代碼
@{
var number = 1;
var num2 = 2;
}
Multi-Token Statements 變量和字符串拼湊的語句 @(number + "number is " + number);
<br />
HTML Encoding
<br />
@*以下沒弄懂-望指教*@
@if (true) {
<text>
hi it's razor<br />
follow me ! I'm facingwaller
</text>
<br />
<span>hi it's razor<br />
follow me ! I'm facingwaller </span>
} else {
}
<br />
Declarative HTML Helpers聲明幫助方法
@helper WordInText(string text) {
foreach (var p in text) {
<li>@p </li>
}
}
調用 @WordInText("ender")
</fieldset>
最終效果
3激動人心的RAZOR
嘗鮮RAZOR這個頁面引擎,感覺挺不錯。
1 用@ 代替 該死的<% %>顯然<,%,>都是非常難敲到的鍵位。
2 單行的@+變量的方式更加簡潔。
3 提供了靜態大量的helper方法。
4 其Chart和grid的輔助方法讓圖表和表格更加容易生成比之前的contrib開源的那個表格生產類庫更加來得人性化。
WebImage幫助創建圖像,也包括基本的圖像操作方法。這些以后我會繼續體驗和比較然后和大家分享。。。
4 歡迎討論其他的頁面引擎
還有話要說。目前我還沒有看過RAZOR的源碼也沒有體驗過其他的(除了webpages)頁面引擎。
說的不好的地方請大家幫指出,也歡迎大家說說其他的頁面引擎,特別是說說易用性,設計思想,開發效率和性能,讓偶開開眼界。