基本寫法介紹
為了讓文章更清楚這裡先假設以下輸出值
Model.Content="<a href='http://demo.tc' >demo小鋪</a>"
item.Key="<span>IsKey</span>"
item.Value="<span>IsValue</span>"
Razor Aspx
@{
int a = 123;
string b = "demoshop";
}
<%
int a = 123;
string b = "demoshop";
%>
程式碼區塊:無輸出
<div>
@Model.Content
</div>
<div>
<%:Model.Content %>
</div>
HTML Encoded:<a href='http://demo.tc' >demo小鋪</a>
<div>
@Html.Raw(Model.Content)
</div>
<div>
<%=Model.Content %>
</div>
HTML Unencoded:demo小鋪
@foreach (var item in collection)
{
<span>@item.Key</span>
}
<%foreach (var item in collection)
{%>
<span><%:item.Key %></span>
<%} %>
混合程式碼:<span>IsKey</span>
@foreach (var item in collection)
{
<text>我是純文字</text> @item.Value
}
<%foreach (var item in collection)
{%>
我是純文字 <%:item.Key %>
<%} %>
混合程式碼:我是純文字 <span>IsValue</span>
@foreach (var item in collection)
{
@:我是純文字 @item.Value
}
<%foreach (var item in collection)
{%>
我是純文字 <%:item.Key %>
<%} %>
混合程式碼:我是純文字 <span>IsValue</span>
@for (int i = 0; i < 3; i++)
{
@:目前是第 @i.
}
<%for (int i = 0; i < 3; i++)
{%>
目前是第<%=i %>.
<%} %>
混合程式碼:目前是第 0. 目前是第 1. 目前是第 2.
@(Model.Content == "" ? "沒貨" : Model.Content)
<%:Model.Content==""?"沒貨": Model.Content%>
三元運算子:<a href='http://demo.tc' >demo小鋪</a>
@*你看不到我*@
<%--你看不到我--%>
註解:無輸出
以上部分表格參考C# Razor Syntax Quick Reference。
神奇的 [at] 符號
@念法是 [at] ,台灣俗稱小老鼠,在 Razor 中它有舉足輕重的用處,因為同時列在上表 demo 覺得有點亂因此在給它一個區塊來放它,Razor 很有趣!基本上它會判斷空白字元與斷行符號
比如說我需要輸出 item.Key和item.Value 的值可以有以下的寫法
@item.Key@item.Value
@(item.Key + item.Value)
如果你需要 Unencoded
@:item.Key @item.Value
如果要輸出 I @ Taiwan
I @@ Taiwan
email 的輸出根本不需要有任何調整
test@test.com
前文有提到 Razor 會判斷空白字元和斷行符號,也因為 Email 的 @ 前後都有字所以會很聰明的認定它為字串,並不會當變數看,再來看下面一個範例會更清楚
依據上面的範例今天我們要輸出 demo歡迎登入的字樣,網友們可能會這樣寫
@User.Identity.Name 歡迎登入 //變數和文字中利用一個半型空白來斷開
但這有可能是我們不想要的效果,那就可以利用 @() 包住變數將它改寫為
@(User.Identity.Name)歡迎登入
就會是黏在一起的文字了
同場加映HTML5 支援
在 HTML5 中有一個很不錯的資料記錄標籤 data-xxx ,因為使用他不需要自行定義標籤因此 demo 還滿喜歡的而且利用 jQuery 就可以相當簡單的把 這標籤的值取出( 官方 API )但是如果你想在 ASP.NET MVC3 中使用需要調整一下寫法
@Html.TextBoxFor(model => model.Key, new {data_test="500" })
必須要使用底線,編譯的時候會自動轉換