Razor语法

Razor 是一种标记语法,用于将基于服务器的代码嵌入网页中。 Razor 语法由 Razor 标记、C# 和 HTML 组成。 包含 Razor 的文件通常具有 .cshtml 文件扩展名。默认 Razor 语言为 HTML, 从 Razor 标记呈现 HTML 与从 HTML 文件呈现 HTML 并没有什么不同, 服务器会按原样呈现 .cshtml Razor 文件中的 HTML 标记。

语法讲解组成:

  1. Razor语法
  2. 隐式Razor表达式
  3. 显式Razor表达式
  4. 表达式编码
  5. Razor代码块
  6. 控制结构
  7. 指令
  8. 标记帮助程序
  9. Razor保留关键字
     

1.Razor语法

Razor支持C#,并使用@符号从HTML转为C#。Razor计算C#表达式,并将它们呈现在HTML输出中。当@符号后跟Razor保留关键字时,它会转换为Razor特定标记,否则会转换为纯C#。

1、如果要对Razor标记中的@符号进行转义,需要再加一个@符号,比如 代码 <p>@@Username</p> 在HTML中的呈现结果为 <p>@Username</p>

2、包含电子邮件地址的HTML属性和内容不将@符号视为转换字符。

2.隐式Razor表达式

1、隐式Razor表达式以@开头,后跟C#代码,例如:<p>@DateTime.Now</p>

2、隐式表达式不能包含空格,但是C#中的await关键字除外。如果C#语句具有明确的结束标记,则可以混用空格

3、隐式表达式不能包含C#泛型,因为括号(<>)内的字符会被解释为HTML标记。

3.显式Razor表达式

1、显式表达式由@符号加平衡圆括号组成,例如:<p>Last week this time: @(DateTime.Now - TimeSpan.FromDays(7))</p> 将计算@()括号中的所有内容,并将其呈现到输出中。

2、可以使用显式表达式将文本与表达式结果串联起来,例如:

@{
var joe = new Person("Joe", 33);
}
<p>Age@(joe.Age)</p>

如果不使用显式表达式,则<p>Age@joe.Age</p>将被视为邮件地址

3、显式表达式中使用C#泛型方法,例如:<p>@(GenericMethod<int>())</p>

4.表达式编码

1、计算结果为字符串的C#表达式使用HTML编码。计算结果为IHtmlContent的C#表达式,直接通过IHtmlContent.WriteTo呈现。计算结果不为IHtmlContent的C#表达式通过ToString转换为字符串,并在呈现前进行编码。例如:

@("<span>Hello World</span>") 呈现的HTML为&lt;span&gt;Hello World&lt;/span&gt;,在浏览器的HTML显示为<span>Hello World</span>字符串文本

2、HtmlHelper.Raw输出不进行编码,但是呈现为HTML标记。例如:@Html.Raw("<span>Hello World</span>") 代码,在HTML中呈现为<span>元素标记的html <span>Hello World</span>

5.Razor代码块

1、Razor代码块以@开头,并括在{}中,代码块中的C#代码不会呈现,一个视图中的代码块和表达式共享相同的作用域并按顺讯进行定义。例如:

@{
var quote = "The future depends on what you do today. - Mahatma Gandhi";
}

<p>@quote</p>

@{
quote = "Hate cannot drive out hate, only love can do that. - Martin Luther King, Jr.";
}

<p>@quote</p>

2、隐式转换:代码块中的默认语言为C#,不过,Razor页面可以转回HTML,例如:

@{
var inCSharp = true;
<p>Now in HTML, was in C# @inCSharp</p>
}

3、带分隔符的显式转换:若要定义呈现在HTML中的代码块子节,请使用Razor中的<text>标记将要呈现的字符括起来,例如:

@for (var i = 0; i < people.Length; i++)
{
var person = people[i];
<text>Name: @person.Name</text>
}

使用此方法可呈现未被HTML标记括起来的HTML,如果没有HTML或者Razor标记,则运Razor行时会发生错误。

<text>标记可用于在呈现内容时控制空格:

1)仅呈现<text>标记之间的内容

2)<text>标记之前或之后的空格不会显示在HTML输出中。

4、只用@的显式行转换:若要在代码块内以HTML的形式呈现整个行的其余内容,请使用@:语法,例如:

@for (var i = 0; i < people.Length; i++)
{
var person = people[i];
@:Name: @person.Name
}

如果代码中没有@:,会造成Razor运行时错误。

6.控制结构

控制结构是对代码块的扩展

1、条件语句:@if、else if 、else 和@switch,示例代码:

@if (value % 2 == 0)
{
<p>The value was even.</p>
}

2、循环语句:@for、@foreach、@while和@dowhile,示例代码:

@for (var i = 0; i < people.Length; i++)
{
var person = people[i];
<p>Name: @person.Name</p>
<p>Age: @person.Age</p>
}

3、复合语句using,示例代码:

@using (Html.BeginForm())
{
<div>
email:
<input type="email" id="Email" value="">
<button>Register</button>
</div>
}

4、@try、catch、finally,示例代码:

@try
{
throw new InvalidOperationException("You did something invalid.");
}
catch (Exception ex)
{
<p>The exception message: @ex.Message</p>
}
finally
{
<p>The finally statement.</p>
}

5、@lock,使用lock保护关键节,示例代码:

@lock (SomeLock)
{
// Do critical section work
}

6、注释:Razor支持C#和HTML注释,示例代码:

@{
/* C# comment */
// Another C# comment
}
<!-- HTML comment -->

呈现网页之前,服务器会删除Razor注释,Razor使用@**@来分隔注释,示例代码:

@*
@{
/* C# comment */
// Another C# comment
}
<!-- HTML comment -->
*@

7.指令

Razor指令由隐式表达式表示:@符号后跟保留关键字

1、@using:用于向生成的视图添加C#using指令

2、@model:指定传递到视图的模型类型,代码示例 @model List<UserInfo> ,则在代码中显示模型数据时可写成@{ foreach(var item in Model){ //要显示的模型的字段数据}}

3、@inherits:对视图继承的类提供完全的控制

4、@inject:允许Razor页面将服务从服务容器注入到视图

5、@functions:允许Razor页面将C#代码块添加到视图中,示例代码:

@functions {
public string GetHello()
{
return "Hello";
}
}
<div>From method: @GetHello()</div>

6、@section:与布局结合使用,允许视图将内容呈现在 HTML 页面的不同部分

8.标记帮助程序

帮助程序有三个相关指令

指令

函数

@addTagHelper向视图提供标记帮助程序
@removeTagHelper从视图中删除以前添加的标记帮助程序。
@tagHelperPrefix指定标记前缀,以启用标记帮助程序支持并阐明标记帮助程序的用法

 

9.Razor保留关键字

Razor关键字

  • page(需要.NET2.0以及更高版本)
  • namespace
  • functions
  • inherits
  • model
  • section
  • helper

C# Razor 关键字

  • case
  • do
  • default
  • for
  • foreach
  • if
  • else
  • lock
  • swicth
  • try
  • catch
  • finally
  • using
  • while

Razor不使用的保留关键字:类

原文地址:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?view=aspnetcore-2.1

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Razor语法是一种用于ASP.NET Web应用程序的视图引擎,允许开发人员通过混合C#代码和HTML标记来创建动态Web页面。以下是Razor语法的详细教程: 1. Razor语法中的代码块用@符号包围,如@{ }。这些代码块可以包含任何C#代码。 2. Razor语法中的表达式用@符号和小括号包围,如@( )。表达式可以是任何C#表达式,并且可以在HTML标记中嵌套使用。 3. Razor语法中的注释用@*和*@包围,如@* 这是一个注释 *@。 4. Razor语法中的条件语句可以使用if、else if和else关键字。例如: ``` @if (condition) { // do something } else if (condition2) { // do something else } else { // do something else } ``` 5. Razor语法中的循环语句可以使用for、foreach和while关键字。例如: ``` @for (int i = 0; i < 10; i++) { <p>@i</p> } @foreach (var item in collection) { <p>@item</p> } @while (condition) { // do something } ``` 6. Razor语法中的HTML标记可以直接嵌套在代码块中,如: ``` @{ var name = "John"; } <h1>Hello, @name!</h1> ``` 7. Razor语法中的HTML标记可以使用@符号和小括号来嵌套表达式,如: ``` <h1>@("Hello, " + name + "!")</h1> ``` 8. Razor语法中的HTML标记可以使用@符号和大括号来嵌套代码块,如: ``` @if (condition) { <p>Some text</p> } ``` 9. Razor语法中的HTML标记可以使用属性,如: ``` <a href="@Url.Action("Index", "Home")">Home</a> ``` 以上就是Razor语法的详细教程,希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值