手机版

ASP中@:及MVC :剃刀语法详解 网

时间:2021-08-27 来源:互联网 编辑:宝哥软件园 浏览:

这是我正在写的博客系列中的另一篇文章,涵盖了MVC 3在ASP中的一些新功能。NET:

http://网络日志。ASP。NET/Scottgu/Archive/2010/10/19/ASP-NET-MVC-3-New-Model-direction-Support-in-razor . aspx Razor的布局(10月22日)用Razor(11月12日)的@:和语法(今天)实现服务器端注释本文将讨论新Razor中视图引擎支持的两个有用的语法功能:@ 3360和文本语法。

使用Razor流畅编程

ASP。NET MVC 3配备了一个名为“Razor”的新视图引擎选项(除了现有的。aspx视图引擎)。你可以在我关于Razor的博客上了解更多关于Razor的信息,比如我们为什么要引入它以及它支持的语法。

Razor试图减少编写视图模板时需要键入的字符数,实现快速流畅的编程工作流程。与大多数模板的语法不同,您不必中断HTML中的编程来清楚地标记服务器端语句块的开始和结束。Razor解析器足够聪明,可以从您的代码中进行推断。这使得语法简单明了,可以干净、快速、有趣地输入。

例如,下面的代码片段遍历产品列表:

Razor用来隐式识别代码段何时结束的一种方法是寻找表示内容块开始的标签或元素内容。例如,在上面的代码段中,Razor自动将foreach循环中的li/li模块视为HTML内容块,因为它看到了初始li标记序列,并且知道它在C#中是无效的。

这项独特的技术——使用标签来识别代码中的内容块,这是Razor在生成HTML时简洁高效的重要因素。

使用@来清楚地指示内容的开头

然而,并不是所有的内容块都以标签元素开始,在某些情况下,Razor解析器不能隐式检测内容块。

这要求Razor通过在代码块中使用“@:字符序列”来明确指示内容块的开头。@:序列表示行后的内容应被视为内容块:

因为我没有发“售完了!”嵌入在HTML标签元素中,Razor无法隐式判断@if块中的内容是否是内容块的开头。我们使用“@:字符序列”来明确指出我们代码段中的这一行应该被视为内容块。

在@:内容块中使用代码块

除了输出静态内容,您还可以将代码片段嵌入到以@:字符序列开头的内容块中。

例如,在下面的代码片段中,我们有两个@:字符序列:

注意我们如何在第二个@:序列中发送内容块中的Unit数(例如“只剩下3个了!”)。我们通过在内容行中嵌入@p.UnitsInStock代码片段来实现这一点。

多行内容

Razor使得在HTML元素中包装多行内容变得很容易。例如,我们的@if容器中的以下内容块被包装在一个HTMLp元素中,这将使Razor将其视为内容:

文本标签是Razor专门处理的元素。Razor将文本块的内部内容视为内容块,不呈现包含这些内容的文本标签(这意味着只呈现文本的内部内容,而不呈现标签本身)。这使得呈现没有被HTML元素包装的多行内容块变得很方便。

如果您更喜欢文本元素,而不是更简单的@:序列,那么也可以根据需要使用文本元素来标识单行内容:

摘要

Razor支持简洁的模板语法,并实现了非常流畅的编码工作流。Razor可以通过检测标签元素来灵活识别内容块的开始,这样Razor方法在有HTML生成的场景中是有效的,你不需要在大约95%的if/else和foreach场景中清晰地标记内容块的开始/结束。

当您不想在代码容器块中使用HTML元素,但需要更准确地标记内容块的边界时,可以使用Razor的@:和文本语法。

我希望这些会有所帮助。也希望大家多多支持我们。

版权声明:ASP中@:及MVC :剃刀语法详解 网是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。