首页 > 生活

Razor语法参考

更新时间:2025-05-22 22:13:35 阅读: 评论:0

Razor 语法混合了C#代码,HTML标记。一般情况下Razor 文件以cshtml作为扩展名,或者在Blazor的Razor 组件中以razor作为扩展名。

语法

Razo药食同源目录r以字符@从HTML转换到C#, Razor会运行C#表达式,并输出HTML内容。同时需要注意当在Razor中以@+Razor保留关键字,它会转到Razor特定的标记,否则是转到换到普通的C#代码。

为了在Razor标记中对字符@逃逸,我们需要使用两个@, 例如:

<p>@@Username</p>

在Razor输出如下结果:<p>@Username</p>

在HTML 标记的属性和标记内容中使用电子邮件地址,不会对字符@进行转义:<a href="mailto:Support@contoso">Support@contoso</a>

Razor隐式表达式

隐式表达式是以@字溜肩符后面跟C#代码

<p>@DateTime.Now</p>

<p>@DateTime.IsLeapYear(2016)</p>

需要注意的是Razor隐式表达式中不能使用泛型。如果在隐式提货单表达式中使用泛型的男人上路话,Razor编译会出错。

Razor显式表达式

显式表达式的语法是:@(表达式), 如:<p>Last week this time苏霍姆林斯基:闵可夫斯基 @(DateTime.Now - TimeSpan.i度房室传导阻滞FromDays(7)t区护理)</p>

在显式表达式中的C#表达式会运行之后,并输出为HTML输出。

同时在显式表达式中可以使用泛型:<p>@(GenericMethod<int>())</p>

表达式编码

C#表达式运行结果被Razor输出为HTML编码,例如C#表达式:@("<span>Hello World</span>")

输出为:&lt;span&gt;Hello World&lt;/span&gt;

经典战争片进行编码后的输出避免造成页面的安全性问题,例如用户直接在代码中输出javascript代码。

另外需要注意,如果用户直接调用Html.通胀预期Raw()方法输出的话,输出结果不会被编码。Razor代码块

Razor代码块是以@+ {} 表示代码块, 代码块不像表达式,代码块并不输出内容,这是和表达式最为重要的区别。例如:

上述代码块定义变量名,使用表达式输出内容。

另外可以在代什么是市盈率码块使用本地方法和HTML标记结合可以定义模板方法,如下图:

输出为:

隐式转换

默认的代码块语言是C#, 但是Razor 页面会转换回HTML 标记,例如:

显式分隔符转换

在代码块中为了显式的对小段的代码转换为HTML 标记,使用<text>将需要转换的内容引用起来,即可以完成显式转换。

需要注意的是使用<text>进行转换,只有在<text>标记中的明月照尖东内容会转换输出。<text>前端和后端不能留有空白。

显式行转换

为了在代码块中输出一行中所有的内容,需要使用@: 进行显式行转换:

在代码块中如果有多余@字优衣库代购符会引发Razor编译错误,而且这类的错误非常难以跟踪和排查,所以对勾尽量注意在代码块中对于字符@的使用。

流程控制

Razor的流程控制实际上是代码块的扩展。上述所有在代码块中的概念都可以在流程控制结构中使用,目前Razor支持如下的流程控制:@if, else if, else, @switch, 使用实例如下:

循环控制

Razor Page目前支持如下的循环控制: @for, @foreach, @while, @do w期刊查询hile.

@using 语句

在C#中使用using 语句确保某个对象在使用完后被正确的释放(disposed), 在Razor中也可以直接使用using语句, 如下图使用Html helper 生成一个form.

@try, catch, finally

异常捕获在Razor中也是类似于直接在C#代码中的语法

@Lock

Razor可以使用lock 保护重要的代码块:

注释

Razor支持C#和HTML的注释。

例如//, /*, */, 以及<!-- -->

同时需要注意的是在Razor 组件中,也可以使用如下的注释

@* … @

指令

Razor 指令以@ + Razor 保留关键字,明确的指明需要使用什么指令,并且这些指令会改变和使用Razor的不同的功能。

关于如何理解指令,先理解,所有的Razor 页面最终会被编译成我们熟悉的C#类。

@attribute

@attribute指令给Razor页面指定需要使用的属性,从而定义生成的C#类的一些特性,例如

@code

@code是Razor 组件专用,用于在@code代码块中定义页面类需要的字段,属性,方法等定义。@code是@functions的别名。但是建议在Razor组件中使用@code,而非@functions.

@implements 指令,类比如C# 类的implements.

@inherits: 类比C#的中继承。

@inject: 从DI容器中引入需要的类。

@layout: 指定页面需要继承的布局模板。

@model: 专用于MVC 视图和Razor Page页面,用于指定mode中国和巴基斯坦的关系l

@namespac天秤座的性格e: 用户指定生成的页面类所处的名称空间。

@page指令:用户razor page项目或者razor 组件,用于定义路由。

@preservewhitespace: 是否保留空白,默认是false.

@section: 用户razor page或者是mvc

@using:

如下指令专用于Razor 组件:

@attributes, @bind, @on{EVENT}, @on{Event}:preventDefault, @on{event}:撒玛利亚女孩stopPropagation, @key, @ref, @typeparam

Razor保留关键字:

C# Razor 保留关键字:

网页修改要逃逸保留关键字必须使用如下的语法:Razor keywords are escaped with @(Razor Keyword) (for example, @(functions)).

和:

C# Razor keywords must be double-escaped with @(@C# Razor Keyword) (for example, @(@case)). The first @ escapes the Razor八马茶叶怎么样 parser. The second @ escapes the C# parser.

公众号: AzureDeveloper, 一个分享和学习Azure技术的好去处,欢迎关注

本文发布于:2023-06-05 06:04:15,感谢您对本站的认可!

本文链接:http://www.ranqi119.com/ge/85/224430.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:语法   Razor
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26|友情:优美诗词|电脑我帮您|扬州装修|369文学|学编程|软件玩家|水木编程|编程频道