• 超级玛丽   2014/7/9 12:46:00
  • ASP.NET MVC学习之-Razor基础语法简介
  • 关键字: MVC Razor语法 模板页
  • Razor的出现,使页面看起更加简洁,Razor的页面后缀为:.cshtml
    Razor基础语法:
    1、代码注释:
          多行注释: @*注释信息*@
         单行注释: // 注释

    1、代码体{...}

    @{  var x=100;  
        var y=100;  
        string str="this is string";  
    }  

    在代码体中,没一行都需要用";"结束,代码区中,字母区分大小写。字符类型常量必须用""括起来,

    2、 由于asp.net引擎会检解析查每个已@开头的代码,除非@前包括非空白字符;如:<div>test@razor</div> 
    这样输出的信息还是test@razor,这不会进行解析,页面输出@符合,可以用HTML中的ASCII编码&#64。


    3、 在Razor中使用局部变量,进行上下文调用:
    @{  
    var message="现在时间为:";  
    var time=DateTime.Now;  
    var outMessage=message+time;  
    }  
    <div>@outMessage </div>   

    页面输出为:现在时间为:2011/12/14 20:26:13; 

    4、字符拼接输出

    @{var cout=100;}  
    <p>这是第 @count 个进球 </p>  
    页面输出:这是第 100 个进球
    如果页面要输出:这是第100个进球则调用方式则为:<p>这是第@{@count}个进球</p>,如果直接用<p>这是第@count个进球</p>,页面将会直接输出:这是第@count个进球

    如果输出的是变量的方法名:<p>这是第@count.ToString()个进球</p>,则可以不用@{}标志

    5、 在@{...}代码体中输出文字,需要用到@:,如下所示:

    @{  
         var name="张三";  
         @:你好:  
         @:@name          
     }  
    页面输出:你好:张三

    6、 逻辑代码处理
    @{  
        if(true)  
        {  
            // do something;  
        }  
        else  
        {  
            // do something;  
        }  
    }  

    7、 在@{...}代码体内部使用html标记

    @{  
            <div>this is <span>test</span></div>  
     }  

     页面输出:this is test
    要进行多行输出时可用:

    @{  
           <text>  
           this first,  
           this secend    
           </text>         
         }  
      页面输出:this first, this secend 
     
    8、 在@{...}内部使用注释

    @{  
        // 单行注释  
        var mesage = "Now Time:";  
        @*   
            当前时间  
            输出当前时间  
        *@   
          
        /*  
         *  使用C#中的  
         *  注释  
         */  
        var time = DateTime.Now;  
      
    <!-- HTML注释-->  
        var outMessage = mesage + time;  
     }  
     
    9、 数据类型转换
       AsInt(), IsInt()  
     AsBool(),IsBool()  
     AsFloat(),IsFloat()  
     AsDecimal(),IsDecimal()  
     AsDateTime(),IsDateTime()  
     ToString()  
      
      @{  
           var count = "100";  
       }  
         
       <p>count:@count.AsInt()</p>  
    输出:count:100  
       <p>@count.IsInt()</p>  
    输出:True  
      
       如果  
    @{  
                 var count = "test";  
     }  
         
    <p>count:@count.AsInt()</p>  
    输出:count:0  
    <p>@count.IsInt()</p>  
    输出:False  

    即:AsInt() 如果转换不成功直接为0,IsInt返回Bool值,其他类似

    10、循环使用

    @{  
            /* for循环使用 */  
            for(int k=1;k<5;k++)  
            {  
                @:第 @k 个;  
            }    
            @*页面输出:第 1 个; 第 2 个; 第 3 个; 第 4 个; *@  
              
            // foreach 使用  
            var list =new List<string> { "one", "two", "three", "four" };  
            foreach(var str in list)  
            {  
                @:@str;  
            }  
            @*页面输出:one; two; three; four; *@  
              
            var flag=1;  
            while(flag<5)  
            {   
               @:第@{@flag}个;   
               flag++;  
            }  
             @*页面输出:第1个; 第2个; 第3个; 第4个; *@  
    }