视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Razor的语法
2025-10-02 12:26:51 责编:小OO
文档
Razor语法  

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.

@ViewBag.Message

  

5.  

6.    

  

7.        1.基本字符串数组操作

  

8.    @{var items = new string[] { "one", "two", "three" };}  

9.    

      

    10.        @{foreach (string item in items)  

    11.          {  

    12.            

  • The item name is : @item
  •   

    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 = "alert('Hello!');";  

27.      string message2 = "alert('Hello!');";  

28.    }  

29.    @message @Html.Raw(@message2)  

30.    

  

31.        5.javascript中的编码:Ajax.JavaScriptStringEncode()

  

32.      

33.        $(function () {  

34.            var message = "Hello @ViewBag.Message";  

35.            $("#output").html(message).show();  

36.  

37.            //当在Javascript中将用户提供的值赋给变量时,要使用javascript字符串编码,而不仅仅是Html编码,记住这一点很重要。  

38.            var message2 = "Hello @Ajax.JavaScriptStringEncode(@ViewBag.Message)";  

39.            $("#output2").html(message2).show();  

40.        });  

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 { "one", "two", "three", "four" };  

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.}  下载本文

显示全文
专题