Razor的默认语言是html,使用@从Html转换到C#。
要想在Html中显示@ 需要输入两个@ (但邮箱地址除外 直接显示)
隐式Razor表达式
写法: @后直接跟C#代码 除了await之外,隐式表达式中不能有空格
<p>@await DoSomething("hello", "world")</p>
隐式表达式也能使用泛型,因为尖括号会被解析为html,可以放在显式表达式,或代码块中
显式Razor表达式
写法:@()
<p>Last week this time: @(DateTime.Now - TimeSpan.FromDays(7))</p>
Razor代码块
写法@{}
视图中的代码块和表达式共享相同的作用域,并按顺序定义
代码块中可以定义本地函数作为模版方法
@{
void RenderName(string name)
{
<p>Name: <strong>@name</strong></p>
}
RenderName("Mahatma Gandhi");
RenderName("Martin Luther King, Jr.");
}
隐式转换
代码块中的默认语言是C#,但Razor页面可以隐式转换为Html
@{
var inCSharp = true;
<p>Now in HTML, was in C# @inCSharp</p>
}
显示转换
使用 <text>
标记从C#转换到Html(text不会显示到Html页面中)
@for (var i = 0; i < people.Length; i++)
{
var person = people[i];
<text>Name: @person.Name</text>
}
这种方式主要用来显示没有被Html包围的文本, text中的空格会被显示,text前后的空格不会显示
显示行转换
代码块中的一整行输出为Html
写法 @:
@for (var i = 0; i < people.Length; i++)
{
var person = people[i];
@:Name: @person.Name
}