你的位置:首页 > ASP.net教程

[ASP.net教程]理解ASP.NET MVC中的Razor视图引擎


什么是 Razor ?

Razor 是一种允许向网页中嵌入基于服务器的代码(C#)的标记语法,是微软针对ASP.NET MVC推出的模板引擎。

C# 的主要 Razor 语法规则

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

 

与对象打交道

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

"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>

读取用户输入

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

由 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>

转换数据类型

将一种数据类型转换为另一种有时很有用。

大多数常见的例子是将字符串输入转换为另一种类型,比如整数或日期。

作为一项规则,用户输入会成为字符串,即使用户输入的是数字。所以,数字输入值在用于计算之前必须被转换为数字。

下面是常用的转换方法列表:

方法描述实例
  • AsInt()
  • IsInt()
把字符串转换为整数。if (myString.IsInt()) {myInt=myString.AsInt();}
  • AsFloat()
  • IsFloat()
把字符串转换为浮点数。if (myString.IsFloat()) {myFloat=myString.AsFloat();}
  • AsDecimal()
  • IsDecimal()
把字符串转换为十进制数。if (myString.IsDecimal()) {myDec=myString.AsDecimal();}
  • AsDateTime()
  • IsDateTime()
把字符串转换为 ASP.NET DateTime 类型myString="10/10/2012"; myDate=myString.AsDateTime();
  • AsBool()
  • IsBool()
把字符串转换为逻辑值。myString="True"; myBool=myString.AsBool();
ToString()把任意数据类型转换为字符串。myInt=1234; myString=myInt.ToString();