ASP.NET Razor - C# 和 VB 代码语法
c# 的主要 razor 语法规则
- razor 代码封装于 @{ ... } 中
- 行内表达式(变量和函数)以 @ 开头
- 代码语句以分号结尾
- 字符串由引号包围
- c# 代码对大小写敏感
- c# 文件的扩展名是 .cshtml
c# 实例
<!-- 单行代码块 --> @{ var mymessage = "hello world"; } <!-- 行内表达式或变量 --> <p>the value of mymessage is: @mymessage</p> <!-- 多行语句代码块 --> @{ var greeting = "welcome to our site!"; var weekday = datetime.now.dayofweek; var greetingmessage = greeting + " here in huston it is: " + weekday; } <p>the greeting is: @greetingmessage</p>
运行实例
vb 的主要 razor 语法规则
- razor 代码块被包围在 @code ... end code 中
- 行内表达式(变量和函数)以 @ 开头
- 以 dim 关键词来声明变量
- 字符串由引号包围
- vb 对大小写不敏感
- vb 文件的扩展名是 .vbhtml
实例
<!-- 单行代码块 --> @code dim mymessage = "hello world" end code <!-- 行内表达式或变量 --> <p>the value of mymessage is: @mymessage</p> <!-- 多行语句代码块 --> @code dim greeting = "welcome to our site!" dim weekday = datetime.now.dayofweek dim greetingmessage = greeting & " here in huston it is: " & weekday end code <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 对象的某些属性:
实例
<table border="1"> <tr> <th width="100px">name</th> <td width="100px">value</td> </tr> <tr> <td>day</td><td>@datetime.now.day</td> </tr> <tr> <td>hour</td><td>@datetime.now.hour</td> </tr> <tr> <td>minute</td><td>@datetime.now.minute</td> </tr> <tr> <td>second</td><td>@datetime.now.second</td> </tr> </td> </table>
运行实例
if 和 else 条件
动态网页的重要特性是基于条件来确定执行的动作。
实现这一点的常用方法是使用 if ... else 语句:
实例
@{ var txt = ""; if(datetime.now.hour > 12) {txt = "good evening";} else {txt = "good morning";} } <html> <body> <p>the message is @txt</p> </body> </html>
运行实例
读取用户输入
动态网页的另一个重要特性是读取用户的输入。
由 request[] 函数读取输入,并由 ispost 条件进行测试:
实例
@{ var totalmessage = ""; if(ispost) { var num1 = request["text1"]; var num2 = request["text2"]; var total = num1.asint() + num2.asint(); totalmessage = "total = " + total; } } <html> <body style="background-color: beige; font-family: verdana, arial;"> <form action="" method="post"> <p><label for="text1">first number:</label><br> <input type="text" name="text1" /></p> <p><label for="text2">second number:</label><br> <input type="text" name="text2" /></p> <p><input type="submit" value=" add " /></p> </form> <p>@totalmessage</p> </body> </html>
运行实例