MVC3 Razor模板引擎

1、Razor基础

  一、单行代码书写javascript

    @代码java

  二、多行代码书写算法

    @{    //@加个大括号就能够在里面写C#代码了。浏览器

      C#代码第一行xss

      C#代码第二行编码

     }  spa

  三、Razor模板引擎会自动判别代码块,可是当代码存在二义性的时候,能够用小括号澄清code

@{
    string name = "张三";   
 }
// @name你好   报错当前上下文中不存在名称"name你好"*@
@(name)你好

  再给一个例子,就是调用泛型方法的时候,尖括号会致使Razor转回标记,这个时候也能够用小括号澄清:对象

@(Html.SomeMethod<Type>())

  对于邮件名而言,Razor采用了一个简单的算法来判别,能够适应大多数状况,当出现Razor判别不出的时候,能够用两个@号,@@来强制输出@号。blog

  四、HTML编码

  默认输出的内容都是通过HTML编码的,这对防止xss攻击有必定做用,可是若是我想将一段代码,就好比javascript代码输出到前台,这时候要用

  @Html.Raw(content)  来保证内容不被编码  

@{
    string message = "<script>alert('你好!');</script>";   
 }
 <span>@message</span>              //实际输出都浏览器的源码 <span>&lt;script&gt;alert(&#39;你好!&#39;);&lt;/script&gt;</span>

 <span>@Html.Raw(@message)</span>   //实际输出到浏览器的源码 <script>alert('你好!');</script>

   五、混合代码与纯文本

    若是想在代码块里向浏览器输出一段内容,这时候就要用到

    @:想输出的文本    //单行

    <text>想输出的文本</text>  //能够写成多行

    并且<text></text>还能够不写在@{}代码块了,可是@:必须写在代码块了,推荐使用<text></text>

    @{

        var i = 1;

        @:@i;  //用于输出变量

     }

  六、MVC调用后台方法

   controller代码:

复制代码
public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewData["kk"] = "长江啊长江,你特别的长!";
            return View("list");
        }
        public static string GetName()
        {
            return "刘德华";
        }
     public string GetName1()
        {
            return "张学友";
        }
}
复制代码

   View代码:

复制代码
  @MvcStart.Controllers.HomeController.GetName();  //静态方法的调用

@{                              //非静态方法的调用
  var con = new MvcStart.Controllers.HomeController();
  var name1 = con.GetName1();
}
@name1

复制代码

   注意,上面是静态的方法,静态的代码最简单,直接@写上命名空间等等就能够了。而静态方法只能写成多行,经过new一个对象来引用。

  @Url.Action("index")  此方法用于返回一个Action路径,当须要Action路径的时候能够用到,好比javascript的src是由程序生成的等等。

相关文章
相关标签/搜索