Razor语法总结

it2022-05-08  8

本文摘录微软相关文章集合而成,主要是做备忘。

本文主要参考文章:文章一,文章二

1. The @ character starts inline expressions, single statement blocks, and multi-statement blocks,这里的block表示代码块,代码块的类型可以分为服务器段代码块(比如if for)和HTM代码块(比如<p></p>),@出现的原则是当当前代码块与上层代码块的性质不同的时候,比如在代码嵌套的情况下,中间夹杂了HTML代码块中的C#代码需要添加@标记

<!-- Single statement blocks -->@{ var total = 7; }<!-- Inline expressions --><p>The value of your account is: @total </p><!-- Multi-statement block -->@{var greeting = "Welcome to our site!";var weekDay = DateTime.Now.DayOfWeek;var greetingMessage = greeting + " Today is: " + weekDay;} @标示符后面的代码都会进行HTML编码。 2. A code block includes one or more code statements and is enclosed in braces. <!-- Single statement block. -->@{ var theMonth = DateTime.Now.Month; }<p>The numeric value of the current month: @theMonth</p><!-- Multi-statement block. -->@{var outsideTemp = 79;var weatherMessage = "Hello, it is " + outsideTemp + " degrees.";}<p>Today's weather: @weatherMessage</p> 3. Inside a block, you end each code statement with a semicolon,但在引用某个变量直接穿插在HTML代码中的时候不需要。 4. You enclose literal string values in double quotation marks   如果你想显示的字符串包涵反斜杠(\)或者需要显示双引号,使用@符号开头的转义方式来处理 <!-- 反斜杠可以放在以@开头的字符串里会被自动转义而不会与C#的语法产生冲突 -->@{ var myFilePath = @"C:\MyFolder\"; }<p>The path is: @myFilePath</p> <!-- 这里用两个双引号来实现转义 -->@{ var myQuote = @"The person said: ""Hello, today is Monday."""; }<p>@myQuote</p> 5. @中的服务器端代码是大小写铭感的6. 用@在代码中来做对象的引用,@符号要起作用,前面必须留空格 <table border="1"><tr> <td>Requested URL</td> <td>Relative Path</td> <td>Full Path</td> <td>HTTP Request Type</td></tr><tr> <td>@Request.Url</td> <td>@Request.FilePath</td> <td>@Request.MapPath(Request.FilePath)</td> <td>@Request.RequestType</td></tr></table> 7. @:支持输出单行的文本显示,这里引入这个标记的原因是,在Razor中,默认是有Framework自动判断内容是否是输出内容,它的参考依据一般是基于一个HTML标记,但是在很多状态下,如果内容不是以标准的HTML标记开头,Razor可能无法自动识别,这个时候就要使用@:标记,一般都出现在C#代码片段中间。详情参考Scott的帖子@:后的文本可以包含纯字符串和非成对的HTML代码,比如<br/>,这里解释一下非成对的HTML标签,有时候由于程序的需要,我们会在Razor的C#代码中出现类似于</div><div>这样的标签,以配合外围标签使用,但由于ASP.Net在解析的时候是一定要保证HTML标签成对出现的,否则就会报错,遇到这种情况,就要请出@:标记了 @if(IsPost) {// Plain text followed by an unmatched HTML tag and server code. @: The time is: <br /> @DateTime.Now// Server code and then plain text, matched tags, and more text. @DateTime.Now @:is the <em>current</em> time.}   <text>支持输出多行的文本显示, 当ASP.Net发现HTML开始标记,它将解析所有的内部标记,同时执行所有的内部服务器端脚本,然后发送到浏览器中 8. 空格和换行情况 //中间的空格不会起作用@{ var lastName = "Smith"; } //下面的断句方式等效@{ var theName ="Smith"; }@{var personName ="Smith" ;} //如果打破引号的引用方式,要添加@标识@{ var longString = @"This is a long string";} 9. Razor注释方式:@* *@   C#注释方式 //   HTML注视方式 <!-- -->,但和Razor方式不同,这种注释方式会把代码发送到浏览器,只是不显示,用户可以从源代码中查看到注释内容 10. 变量和类型   变量采用var方式生成,采用AsInt等类似方式进行类型转换,采用IsInt等方式来判断某种类型11. 对文件和目录的获取定位:  //~表示虚拟目录中的根目录@{var myImagesFolder = "~/images";var myStyleSheet = "~/styles/StyleSheet.css";} @{var dataFilePath = "~/dataFile.txt";}<!--显示上面虚拟路经的实际绝对路径 --><p>@Server.MapPath(dataFilePath)</p> @{var myImagesFolder = "~/images";var myStyleSheet = "~/styles/StyleSheet.css";}<!--变量方式 创建一个可以被HTML识别的链接地址 --><img src="@Href(myImagesFolder)/Logo.jpg" /><!-- 直接方式创建一个可以被HTML识别的链接地址 --><img src="@Href("~/images")/Logo.jpg" /><!-- 引入一个CSs文件的反噬 --><link rel="stylesheet" type="text/css" href="@Href(myStyleSheet)" /> 12. 对当前页面的引用,这里主要调用页面的Request获取URL,User信息,还可以获取页面的Response写入信息,在Razor可以用this引用当前页面,同样也可以省略而直接调用Request。 13. 调用有参数的对象方法,除了常规方法外,还可以用赋值的方法: // Pass parameters to a method using named parameters.var myPathNamed = Request.MapPath(baseVirtualDir: "/", allowCrossAppMapping: true, virtualPath: "/scripts");<p>@myPathNamed</p>

转载于:https://www.cnblogs.com/brusehht/archive/2012/02/17/2349783.html

相关资源:数据结构—成绩单生成器

最新回复(0)