2012-09-20 12:32:15| 分类: MVC | 标签:razor |字号 订阅
Razor作为一种全新的模板被MVC3和WebMatrix使用。尽管目前还存在一定性能上面的问题,但一直不喜欢WebForm标签式写法的 人已经看到了福音。Razor在减少代码冗余、增强代码可读性和vs 智能感知方面,都有着突出的优势。本文将结合示例,总结出Razor的基本用法,以便于更多人了解Razor、使用Razor。
1.开发工具
Razor是MVC3中的一个视图模板引擎,所以,我们只需要在VS2010中安装一个MVC3的工具,就可以使用Razor了。
如果你不想使用MVC3,还有另外一种选择,那便是WebMatrix + VS 2010;WebMatrix提供了Razor模板的网站,但它并不是一个优秀的IDE,没有像VS一样的智能感知和编辑时错误提醒功能。所以,在使用 WebMatrix创建了Razor引擎的网站后,可以在VS2010中打开进行编辑。本文示例所使用的就是这种方式。
2.Razor的文件类型
Razor支持两种文件类型,分别是.cshtml 和.vbhtml,其中.cshtml 的服务器代码使用了c#的语法,.vbhtml 的服务器代码使用了vb.net的语法。
由此也可以看出,Razor其实是一种服务器代码和HTML代码混写的代码模板,类似于没有后置代码的.aspx文件。
3.Razor语法之@符号
@字符是Razor中的一个重要符号,它被定义为Razor服务器代码块的开始符号。如果我们希望在网页中输出一个变量,或者当前日期,我们可以使用如下代码:
@{string productName = "台灯";}
@productName
@DateTime.Now.ToString("yyyy-MM-hh")
当你在完成这段代码的时候,你会发现VS 2010为我们提供了代码着色和智能感知:
运行这段代码,让我们看看浏览器的显示内容:
有这个示例可以看出,@符号标记了一个HTML代码的输出,在其后的变量、方法返回值和表达式运算结果会进行输出。
4.Razor语法之代码块定义
你可以使用@{code}来定义一段代码块。
@{
int num1 =10;
int num2 =5;
int sum = num1 + num2;
@sum;
}
在代码块中,我们编写代码的方式和通常服务器端代码的方式是一样的。另外,如果需要输出,例如上面的在页面中输出结果,我们可以使用@sum完成输出
另外,@(code)可以输出一个表达式的运算结果,上面的代码我们也可以写成这样:
@{
int num1 =10;
int num2 =5;
int sum = num1 + num2;
@(num1 +num2);
}
5.Razor语法之代码混写
Razor支持代码混写。在代码块中插入HTML、在HTML中插入Razor语句都是可以的。
@{
int num1 =10;
int num2 =5;
int sum = num1 + num2;
string color ="Red";
@sum
}
值得称赞的是,即使我们这样混写,也不影响VS2010的智能感知功能。
∙输出@符号:@@
∙输出Email地址:Razor模板会自动识别出Email地址,所以不需要我们进行任何的转换。而在代码块中,只需要使用 @:Tom@gmail.com 即可。@:表示后面的内容为文本。
∙输出HTML代码(包含标签):直接输出,string html = "文本"; @html
∙输出HTML内容(不包含标签):有两种方法,第一种:IHtmlString html=new HtmlString("文本"); @html; 第二种:string html = "文本"; @Html.Raw(html);
6.Razor语法之注释
这里所说的注释是指服务器端的注释,在Razor代码块中,可以使用C#的注释方式来进行注释,分别是//:(单行注释)和/**/(多行注释)。
另外,Razor还提供了一种新的服务器段代码注释,可以即注释C#代码,同时可以注释HTML代码,@**@,这种注释方式不受代码块的,在Razor代码中的任何位置都额可以。
@*
这是一个注释
这个是注释
*@
Razor表达式
分类: ASP.NET MVC2012-08-11 15:24 171人阅读 评论(0) 收藏 举报
Controller:
[csharp] view plaincopyprint?
1.using System;
2.using System.Collections.Generic;
3.using System.Linq;
4.using System.Web;
5.using System.Web.Mvc;
6.
7.namespace _04_RazorExpression.Controllers
8.{
9. public class HomeController : Controller
10. {
11. public ActionResult Index()
12. {
13. ViewBag.Message = "Welcome to ASP.NET MVC!";
14. return View();
15. }
16.
17. public ActionResult About()
18. {
19. return View();
20. }
21. }
22.} 23.
View:
[csharp] view plaincopyprint?
1.@{
2. ViewBag.Title = "Home Page";
3.}
4.
5.
6.
7. 1.基本字符串数组操作
8. @{var items = new string[] { "one", "two", "three" };}
9.
10. @{foreach (string item in items)
11. {
12.
13. }
14. }
15.
16. Items total:@items.Length;
17.
18. 2.显式代码(括号)表达式:@@()
19. @{string myApp = "Model";}
20. @(myApp).Models
21.
22. 3.@@转义符号:@@@@
23. zhangqs008@@163.com
24.
25. 4.Html编码输出:Html.Raw()
26. @{string message = "";
27. string message2 = "alert('Hello!');";
28. }
29. @message @Html.Raw(@message2)
30.
31. 5.javascript中的编码:Ajax.JavaScriptStringEncode()
32.
41. "output">
42.
43. "output2">
44.
45. 6.混合代码和纯文本:@@:
46. @{ bool showMessage = true;
47. if (showMessage)
48. {
49. @:this is plain text
50. }
51. }
52.
53. 7.代码注释 @@*...*@@
54. @*{
55. bool showMessage = true;
56. if (showMessage)
57. {
58. @:this is plain text
59. }}
60. *@
61.
62.
63. To learn more about ASP.NET MVC visit . http://asp.net/mvc
65.
效果图:
分享
Razor基础语法简介
分类: asp.net MVC2011-12-14 23:38 1070人阅读 评论(1) 收藏 举报
Razor的出现,使页面看起更加简洁,Razor的页面后缀为:.cshtml
Razor基础语法:
1、代码注释:
多行注释: @*注释信息*@
单行注释: // 注释
1、代码体{...}
[html] view plaincopy
1.@{ var x=100;
2. var y=100;
3. string str="this is string";
4.}
在代码体中,没一行都需要用";"结束,代码区中,字母区分大小写。字符类型常量必须用""括起来,
2、 由于asp.net引擎会检解析查每个已@开头的代码,除非@前包括非空白字符;如:test@razor
这样输出的信息还是test@razor,这不会进行解析,页面输出@符合,可以用HTML中的ASCII编码。
3、 在Razor中使用局部变量,进行上下文调用:
[html] view plaincopy
1.@{
2.var message="现在时间为:";
3.var time=DateTime.Now;
4.var outMessage=message+time;
5.}
6.@outMessage
页面输出为:现在时间为:2011/12/14 20:26:13;
4、字符拼接输出
[html] view plaincopy
1.@{var cout=100;}
2.
这是第 @count 个进球
页面输出:这是第 100 个进球
如果页面要输出:这是第100个进球
则调用方式则为:
这是第@{@count}个进球
,如果直接用
这是第@count个进球
,页面将会直接输出:这是第@count个进球如果输出的是变量的方法名:
这是第@count.ToString()个进球
,则可以不用@{}标志5、 在@{...}代码体中输出文字,需要用到@:,如下所示:
[html] view plaincopy
1.@{
2. var name="张三";
3. @:你好:
4. @:@name
5. }
页面输出:你好:张三
6、 逻辑代码处理
[html] view plaincopy
1.@{
2. if(true)
3. {
4. // do something;
5. }
6. else
7. {
8. // do something;
9. }
10.}
7、 在@{...}代码体内部使用html标记
[html] view plaincopy
1.@{
2. this is test
3. }
页面输出:this is test
要进行多行输出时可用:
[html] view plaincopy
1.@{
2. 3. this first, 4. this secend 5.
6. }
页面输出:this first, this secend
8、 在@{...}内部使用注释
[html] view plaincopy
1.@{
2. // 单行注释
3. var mesage = "Now Time:";
4. @*
5. 当前时间
6. 输出当前时间
7. *@
8.
9. /*
10. * 使用C#中的
11. * 注释
12. */
13. var time = DateTime.Now;
14.
15.
16. var outMessage = mesage + time;
17. }
9、 数据类型转换
[html] view plaincopy
1. AsInt(), IsInt()
2. AsBool(),IsBool()
3. AsFloat(),IsFloat()
4. AsDecimal(),IsDecimal()
5. AsDateTime(),IsDateTime()
6. ToString()
7.
8. @{
9. var count = "100";
10. }
11.
12.
count:@count.AsInt()
13.输出:count:100
14.
@count.IsInt()
15.输出:True
16.
17. 如果
18.@{
19. var count = "test";
20. }
21.
22.
count:@count.AsInt()
23.输出:count:0
24.
@count.IsInt()
25.输出:False
即:AsInt() 如果转换不成功直接为0,IsInt返回Bool值,其他类似
10、循环使用
[html] view plaincopy
1.@{
2. /* for循环使用 */
3. for(int k=1;k<5;k++)
4. {
5. @:第 @k 个;
6. }
7.
8.
9. @*页面输出:第 1 个; 第 2 个; 第 3 个; 第 4 个; *@
10.
11. // foreach 使用
12. var list =new List 13. foreach(var str in list) 14. { 15. @:@str; 16. } 17. @*页面输出:one; two; three; four; *@ 18. 19. var flag=1; 20. while(flag<5) 21. { 22. @:第@{@flag}个; 23. flag++; 24. } 25. @*页面输出:第1个; 第2个; 第3个; 第4个; *@ 26.} 下载本文