前言:
Razor引擎的核心是識別@符號及尖括號:
1、<...></...>
2、<.../>
[之所以說是“尖括號”而非“元素標簽”,見下面的例子。]
@for (int i = 0; i < 5; i++)
{
<test>i</test>
}
基本語法:
語法一、@()
表達式
@( 1 == 0 ? "1等於0" : "1不等於0")
語法二、@{}
語句塊
@{
var now = DateTime.Now;
if (now.Hour.CompareTo(12) < 0)
{
<span>上午</span>
}
else
{
<span>下午</span>
}
}
語法三、@
1、@后面直接跟變量輸出變量的內容
2、@后面直接跟有返回值的方法輸出方法的返回值
3、if-else、switch、for、foreach、while、do-while等流控制語句
@now.Hour<br />
@now.ToShortDateString()<br />
@if (now.Hour.CompareTo(12) < 0)
{
<span>上午</span>
}
else
{
<span>下午</span>
}
<br />
@for (int i = 0; i < 5; i++)
{
<span>@i</span>
}
特殊場景:@注意點 <span>不能切換到@now.編程語言</span><br /> <span>不能切換到 @now .編程語言</span><br /> @{ RazorTestClass.SayHello(); } public class RazorTestClass { public static void SayHello() { return;
} public static string SayHello<T>(T t) { return t.ToString();
} } |
語法四、@helper
聲明方法
@helper paging(uint itemCount,uint pageSize,uint pageIndex)
{
uint totalPagesCount = itemCount%pageSize == 0 ? itemCount/pageSize : itemCount/pageSize + 1;
if (0 ==
totalPagesCount
)
{
totalPagesCount = 1;
}
for (
uint i = 1; i <= totalPagesCount; i++)
{
if (
i == pageIndex)
{
<a class="pagination current" href="#?pageIndex=@i">@i</a>
}
else
{
<a class="pagination" href="#?pageIndex=@i">@i</a>
}
}
}
@paging(51, 10, 3)
語法五、@**@
注釋
@*
這是一個注釋
*@
語法六、Razor內置標簽<text></text>
用於直接輸出內容
@for (int i = 0; i < 5; i++)
{
<text>@i</text>
}
語法七、轉義符
例:
@@
@class
@{
@:轉義符@@
}
補充:
Razor引擎輸出HTML默認會轉義,需要不轉義輸出使用html.Raw()方法最為方便。
@{
var str = "<div style='color:red'>我會被轉義嗎?</div>";
}
@str
@Html.Raw(str)