前言:
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)