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是由程序生成的等等。

相關文章
相關標籤/搜索