ASP.NET Razor - C# 和 VB 代码语法

Razor 同时支持 C# (C sharp) 和 VB (Visual Basic)。

C# 的主要 Razor 语法规则

  • Razor 代码封装于 @{ … } 中
  • 行内表达式(变量和函数)以 @ 开头
  • 代码语句以分号结尾
  • 字符串由引号包围
  • C# 代码对大小写敏感
  • C# 文件的扩展名是 .cshtml

C# 实例

  1. <!-- 单行代码块 -->
  2. @{ var myMessage = "Hello World"; }
  3.  
  4. <!-- 行内表达式或变量 -->
  5. <p>The value of myMessage is: @myMessage</p>
  6.  
  7. <!-- 多行语句代码块 -->
  8. @{
  9. var greeting = "Welcome to our site!";
  10. var weekDay = DateTime.Now.DayOfWeek;
  11. var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
  12. }
  13. <p>The greeting is: @greetingMessage</p>

VB 的主要 Razor 语法规则

  • Razor 代码块被包围在 @Code … End Code 中
  • 行内表达式(变量和函数)以 @ 开头
  • 以 Dim 关键词来声明变量
  • 字符串由引号包围
  • VB 对大小写不敏感
  • VB 文件的扩展名是 .vbhtml

实例

  1. <!-- 单行代码块 -->
  2. @Code dim myMessage = "Hello World" End Code
  3.  
  4. <!-- 行内表达式或变量 -->
  5. <p>The value of myMessage is: @myMessage</p>
  6.  
  7. <!-- 多行语句代码块 -->
  8. @Code
  9. dim greeting = "Welcome to our site!"
  10. dim weekDay = DateTime.Now.DayOfWeek
  11. dim greetingMessage = greeting & " Here in Huston it is: " & weekDay
  12. End Code
  13.  
  14. <p>The greeting is: @greetingMessage</p>

如何工作?

Razor 是一种简单的编程语法,用于在网页中嵌入服务器端代码。

Razor 语法基于 ASP.NET 框架,该框架是微软的 .NET 框架特别为 web 应用程序开发而设计的组成部分。

Razor 语法赋予您所有 ASP.NET 的能力,但是使用了简化过的语法,如果您是初学者,则更容易学习,如果您是专家,则更有利于提高生产力。

Razor 网页可被描述为带有两种内容的 HTML 页面:HTML 内容和 Razor 代码。

当服务器读取这种页面后,在将 HTML 页面发送到浏览器之前,会首先运行 Razor 代码。这些在服务器上执行的代码能够完成浏览器中无法完成的任务,比如访问服务器数据库。服务器代码能够在页面被发送到浏览器之前创建动态的 HTML 内容。从浏览器来看的话,由服务器代码生成的 HTML 与静态 HTML 内容没有区别。

使用 Razor 语法的 ASP.NET 网页拥有特殊的文件扩展名 cshtml(使用 C# 的 Razor 语法)或者 vbhtml(使用 VB 的 Razor)。

与对象打交道

服务器代码常常涉及对象。

"Date" 对象是典型的 ASP.NET 内建对象,但是也可以自行定义对象,一张网页,一个文本框,一个文件,或者一条数据库记录,等等。

对象可以拥有能够执行的方法。数据库记录可以提供“保存”方法,图像对象可以有“旋转”方法,电子邮件对象可以提供“发送”方法,以此类推。

对象也可以有描述其特点的属性。数据库记录可以有 FirstName 和 LastName 属性。

ASP.NET Date 对象拥有 Now 属性(写为 Date.Now),Now 属性有 Day 属性(写为 Date.Now.Day)。下面的例子展示如何访问 Date 对象的某些属性:

实例

  1. <table border="1">
  2. <tr>
  3. <th width="100px">Name</th>
  4. <td width="100px">Value</td>
  5. </tr>
  6. <tr>
  7. <td>Day</td><td>@DateTime.Now.Day</td>
  8. </tr>
  9. <tr>
  10. <td>Hour</td><td>@DateTime.Now.Hour</td>
  11. </tr>
  12. <tr>
  13. <td>Minute</td><td>@DateTime.Now.Minute</td>
  14. </tr>
  15. <tr>
  16. <td>Second</td><td>@DateTime.Now.Second</td>
  17. </tr>
  18. </td>
  19. </table>

If 和 Else 条件

动态网页的重要特性是基于条件来确定执行的动作。

实现这一点的常用方法是使用 if … else 语句:

实例

  1. @{
  2. var txt = "";
  3. if(DateTime.Now.Hour > 12)
  4. {txt = "Good Evening";}
  5. else
  6. {txt = "Good Morning";}
  7. }
  8. <html>
  9. <body>
  10. <p>The message is @txt</p>
  11. </body>
  12. </html>

读取用户输入

动态网页的另一个重要特性是读取用户的输入。

由 Request[] 函数读取输入,并由 IsPost 条件进行测试:

实例

  1. @{
  2. var totalMessage = "";
  3. if(IsPost)
  4. {
  5. var num1 = Request["text1"];
  6. var num2 = Request["text2"];
  7. var total = num1.AsInt() + num2.AsInt();
  8. totalMessage = "Total = " + total;
  9. }
  10. }
  11. <html>
  12. <body style="background-color: beige; font-family: Verdana, Arial;">
  13. <form action="" method="post">
  14. <p><label for="text1">First Number:</label><br>
  15. <input type="text" name="text1" /></p>
  16. <p><label for="text2">Second Number:</label><br>
  17. <input type="text" name="text2" /></p>
  18. <p><input type="submit" value=" Add " /></p>
  19. </form>
  20. <p>@totalMessage</p>
  21. </body>
  22. </html>