概述
我记得在MVC3.0的时候建一个view还可以选择asp.net模板和Razor模板,而今看到mvc5已经推荐使用了Razor作为模板引擎,那我们先来简单看看两者的区别,原始的方式是用<%= %>在HTML代码中去调用C#代码,这种方式是打ASP.NET还在娘胎里就使用的方法,即不灵活,而且又容易和HTML混淆。
Asp.net: <script src="<%=Url.Content("~/Scripts/jquery-1.6.4.min.js")%>"
Razor: <script src="@Url.Content("~/Scripts/jquery-1.6.4.min.js")"
从上面2段代码的对比很容易看出来用Razor不用关心代码结束符,更方便使用。
从上图可以看出Razor是建立在ASP.NET的基础之上的,语法和ASP.NET有很多相似的地方。我们下面来看看具体的语法
语法介绍
单行Razor语句的写法
@{ var intAge= 17; }
<p>显示个年龄: @intAge</p>
多行Razor语句用“@{}”括起来
@{
var welcome= "Welcome to my blog!";
var weekDay = DateTime.Now.DayOfWeek;
var sumMessage = greeting + " Today is: " + weekDay;
}
<p> 欢迎语: @sumMessage</p>
区分大小写
@{
var BIG= "我是大写的";
var big= "我是小写的";
}
<P>小写:@BIG</P>
<P>大写:@big</P>
可以调用系统的对象
<div>@Request.Url</div>
<div>@Request.FilePath</div>
<div>@Request.MapPath(Request.FilePath)</div>
<div>@Request.RequestType</div>
Razor中显示HTML内容
<div>
@{<b>我是html内容</b>}
</div>@{
//用@:输出单行html
@:现在的时间是:@DateTime.Now
//用<text>输出多行HTML
<text>大家好<BR/>
现在的时间是:</text>@DateTime.Now
}
Razor中的多行注释
@{
@*
这里是一个多行代码注释;
还是注释;
继续注释。
*@
//同时也可以使用C#的注释语法
/*
多行注释
多行注释
*/}
Razor支持C#系统内的数据类型和用户自定义类型(用户自定义类型用Model实现传递)
//字符串
var aString = "Hello!大家好!";
// 整型变量.
var aInt = 3;
//运算表达式
var aBiggerInt = aInt + 5;
//日期时间
var aTime = DateTime.Now;
//一个Request对象的属性
var aPath = Request.Url;
变量类型转换
@{
var num1 = "3";
var num2 = "5";
// 将字符串转换成整型并进行相加运算.最终结果total=8
var total = num1.AsInt() + num2.AsInt();
}
<P>@total</P>
常用的转换函数
方法名 | 描述 | 例子 |