理解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();