demoshop

demo, trying to be the best_

版本
3

在 ASP.NET MVC 3 中增加了一種新的 視圖引擎( View Engine )優點相當的多因此 demo 相信如果要寫 ASP.NET MVC 3 的朋友絕大多數都會選擇使用 Razor 但因為寫法改變,剛開始可能是會十分不習慣,甚至一些很簡單的東西還要 Try 很多次才會成功,因此 demo 特別整理了一下,我寫 demo小鋪時有停頓的地方,期望有需要的網友可以更快的接觸 Razor 這相當優良的 視圖引擎( View Engine )

  • 2011-06-13:增加電子郵件與@() 的用法說明

●基本寫法介紹

為了讓文章更清楚這裡先假設以下輸出值

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";
%>
HTML Encoded:<a href='http://demo.tc' >demo小鋪</a>
<div>
    @Model.Content
</div>
<div>
    <%:Model.Content %>
</div>
HTML Unencoded:demo小鋪
<div>
    @Html.Raw(Model.Content)
</div>
<div>
    <%=Model.Content %>
</div>
混合程式碼:<span>IsKey</span>
@foreach (var item in collection)
{
    <span>@item.Key</span>
}
<%foreach (var item in collection)
    {%>
        <span><%:item.Key %></span>
<%} %>
混合程式碼:我是純文字 <span>IsValue</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 %>
<%} %>
混合程式碼:目前是第 0. 目前是第 1. 目前是第 2.
@for (int i = 0; i < 3; i++)
{
    @:目前是第 @i. 
}
<%for (int i = 0; i < 3; i++)
  {%>
      目前是第<%=i %>.
<%} %>
三元運算子:<a href='http://demo.tc' >demo小鋪</a>
@(Model.Content == "" ? "沒貨" : Model.Content)

<%:Model.Content==""?"沒貨": Model.Content%>
註解:無輸出
@*你看不到我*@
<%--你看不到我--%>

以上部分表格參考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

demo廢言前文有提到 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" })

必須要使用底線,編譯的時候會自動轉換

回應討論