Razor语法
Razor 支持 c #,并使用 @ 符号从 HTML 转换为 c #。 Razor 计算 c # 表达式并在 HTML 输出中呈现。
当 @ 符号后跟 Razor 保留关键字时,它会转换为 Razor 特定标记。 否则会转换为纯 C#。
若要对 @ 标记中的符号进行转义 Razor ,请使用第二个 @ 符号:
<p>@@Username</p>
<p>@Username</p>
包含电子邮件地址的 HTML 属性和内容不将 @ 符号视为转换字符。 以下示例中的电子邮件地址将通过分析来保持不变 Razor :
<a href="mailto:Support@contoso.com">Support@contoso.com</a>
隐式 Razor 表达式
隐式 Razor 表达式以开头, @ 后跟 c # 代码:
<p>@DateTime.Now</p>
<p>@DateTime.IsLeapYear(2016)</p>
隐式表达式不能包含空格,但 C# await 关键字除外。 如果该 C# 语句具有明确的结束标记,则可以混用空格:
<p>@await DoSomething("hello", "world")</p>
隐式表达式 不能 包含 C# 泛型,因为括号 (<>) 内的字符会被解释为 HTML 标记。 以下代码 无 效:
<p>@GenericMethod<int>()</p>
上述代码生成与以下错误之一类似的编译器错误:
“int” 元素未结束。 所有元素都必须自结束或具有匹配的结束标记。
无法将方法组 “GenericMethod” 转换为非委托类型 “object”。 是否希望调用此方法?`
泛型方法调用必须在显式 Razor 表达式或 Razor 代码块中进行包装。
显式 Razor 表达式
显式 Razor 表达式由 @ 带对称括号的符号组成。 若要呈现上周的时间,请 Razor 使用以下标记:
<p>Last week this time: @(DateTime.Now - TimeSpan.FromDays(7))</p>
将计算 @() 括号中的所有内容,并将其呈现到输出中。
前面部分中所述的隐式表达式通常不能包含空格。 在下面的代码中,不会从当前时间减去一周:
<p>Last week: @DateTime.Now - TimeSpan.FromDays(7)</p>
该代码呈现以下 HTML:
<p>Last week: 7/7/2016 4:39:52 PM - TimeSpan.FromDays(7)</p>
可以使用显式表达式将文本与表达式结果串联起来:
@{
var joe = new Person("Joe", 33);
}
<p>Age@(joe