mvc 4 Razor (@html.xx)語法大全以及應用

Razor語法大全

 

 @Htmlhtml

ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction差異


對這四個的差異作一個總結,清理一下思路,便利從此應用:

@Html.Action

一、Html.ActionLink("linkText","actionName")git

第一個參數:要顯示的文本,第二個參數:視圖名
例如:<%=Html.ActionLink("跳轉到About頁面", "About");%> → <a href="/Home/About">跳轉到About頁面</a>

二、Html.ActionLink("linkText","actionName","controlName")
第一個參數:要顯示的文本,第二個參數:視圖名, 第三個參數:控制器名
例如:<%= Html.ActionLink("跳轉到別的controler中", "Index", "Home");%> →<a href="/
Home/Index
">跳轉到別的controler中</a>

三、
Html.ActionLink("linkText","actionName",routeValues)
第一個參數:要顯示的文本,第二個參數:視圖名, 第三個參數:url中的參數
例 如:<%=Html.ActionLink("跳轉到About頁面", "About", new { id = "1", name = "x" }) %> → <a href="/Home/About/1?name=x">跳轉到About頁面</a>

四、
Html.ActionLink("linkText","actionName",routeValues,htmlAttributes)
第一個參數:要顯示的文本,第二個參數:視圖名, 第三個參數:url中的參數,第四個參數:設置標籤屬性
例 如:<%=Html.ActionLink("跳轉到About頁面", "About", new { id = "1", name = "x" }, new { disabled = "disabled",@class = "about"})%>  → <a class="about" disabled="disabled" href="/Home/About/1?name=x">跳轉到About頁面</a>

注意:設置標籤的class屬性時,應在class前加上@,由於class是關鍵字。

上文中的<%= %> 均可以換成
<%: %> 

「<%:%>」 和 「<%=%>」 的區別:
<%: %>對其中內容進行htmlEncode編碼了,能夠防止跨站腳本攻擊(即: XSS攻擊)。

<%:<div>顯示div<div> %> → 
<div>顯示div<div>  而 
<%= <div>顯示div<div> %> → 
顯示div

<%: %>中用函數時,該函數必定要有返回值,不然,會報錯。

 

http://www.mamicode.com/info-detail-1244382.html github

 

 

使用方法:@Html.Action(action, controller)
加載局部頁面。
例如在模板頁中使用:@Html.Action("Contact", "Company")
在CompanyController中有以下方法:
public PartialViewResult Contact()web

{
   return PartialView();
}服務器

 

一、帶有Render的辦法返回值是void,在辦法內部進行輸出;不帶的返回值類型爲MvcHtmlString,因此只能如許應用:
    @Html.Partial 對應 @{Html.RenderPartial(....);}
    @Html.Action 對應 @{Html.RenderAction(....);}框架


二、Action、RenderAction加載辦法的視圖,履行Controller → Model → View的次序,而後把產生的頁面帶回到原本的View中再回傳。而Partial、RenderPartial直接加載視圖文件內容函數


3.  Html.Partial能夠直接供給用戶控件名做爲參數,而Html.Action需要有對應的Action,在Action內部返回PartailResult(即retun PartialView())。工具


四、對於簡單的沒有任何邏輯的用戶控件,推薦應用Html.Partial;對於需要設置一些Model的用戶控件,推薦應用Html.Action。固然,有Model數據也是能夠應用Html.Partial辦法的,能夠看辦法的重載。佈局


五、應用Html.Action有個益處,就是能夠按照不合的場景選擇不合的用戶控件。好比:
@Html.Action("UserInfoControl")
在對應的UserInfoControl這個Action中,在用戶未登陸的時辰,能夠retun PartialView("LogOnUserControl");登陸後,能夠retun PartialView("UserInfoControl");post

    

 

 

 

 

更多:關注:http://blog.csdn.net/hcf_force/article/category/1872009

 本文頁面來源地址:http://www.cnblogs.com/dengxinglin/p/3352078.html

Razor是基於framewor4以上寫的一個開源項目:https://github.com/Antaris/RazorEngine/

Razor是包含了模板引擎和動態編譯兩部分。本部分就簡單記錄了模板引擎的一些語法,以後用Razor作一個代碼生成器,就使用Razor的語法來。

Razor的發佈是和MVC一塊兒的,做爲MVC的視圖模板引擎。

 

Razor文件類型

   Razor能夠在vb.net和C#中使用。分別對應了兩種文件類型,.vbhtml和.cshtml 

 

Razor的標識符

    @字符被定義爲Razor服務器代碼塊的標識符,後面的表示是服務器代碼了。web form中使用<%%>中寫服務器代碼一個道理。在vs工具裏面提供了代碼着色和智能感應的功能。以下面代碼:

@{string userName= "鄧星林";} <span>@userName</span> <span>@DateTime.Now.ToString("yyyy-MM-hh")</span>

 

Razor的做用域

     在上面一個例子中都已經使用到了大括號{},不錯,大括號裏面的就是表示做用域的範圍,用形如@{code}來寫一段代碼塊。

@{
    string userName= "鄧星林"; @userName }

在做用域(代碼塊)中輸出也是用@符號的。

 

用Razor和html代碼混合編寫

   在Razor中寫html代碼和html代碼中寫Razor語句都是能夠的,而且還有智能提示。

   a.在做用域內若是是以html標籤開始則視爲文本輸出

   b.若是要輸出@,則使用@@

   c.若是要輸出非html標籤和非Razor語句的代碼,則用@:,他的做用是至關於在處於html下面編寫同樣了,如在@:後面能夠加上@就是表示Razor語句的變量

 如:

複製代碼
@{

    var str = "abc"; ////下面會輸出:this is a mail:dxl0321@qq.com, this is var: abc,this is mail@str,this is @; @: this is a mail:dxl0321@qq.com, this is var: @str,this is mail@str,this is @@; //下面輸出abc  @str }
複製代碼

Razor做用塊註釋

    razor做用塊裏面自己就是服務器代碼了,所以可以使用服務器代碼的註釋,註釋有//和/**/分別是單行註釋和多行註釋。

   另外razor註釋還可使用自身特有的@* 註釋的內容 *@,支持單行和多行的。

複製代碼
@{
   @* 多行註釋 多行註釋 *@ var i = 10; @* asdfasf *@ }
複製代碼

Razor類型轉換

         As系列擴展方法和Is系列擴展方法

          AsInt(), IsInt()

      AsBool(),IsBool()

      AsFloat(),IsFloat()

     AsDecimal(),IsDecimal()

      AsDateTime(),IsDateTime()

    ToString()

@{
    var i = 「10」; } <p> i = @i.AsInt() </p> <!-- 輸出 i = 10 --> 

 

razor其它

  @Href("~/")//表示網站的根目錄

  @Html.Raw(Module.Content)  輸出HTML,如:@Html.Raw('<font color='red'>紅字</font>'),就會顯示出紅色的」紅字「,不用的話會直接顯示這段html字符串(<font color='red'>紅色文字</font>)

 

 

 

在實際中,好比一個網站,整過框架是同樣的,而有的地方是不少相同的版塊。所以咱們須要複用。

 

佈局(Layout)

   layout方式佈局就是至關於一個模板同樣的,咱們在它地址地方去添加代碼。至關於定義好了框架,做爲一個母版頁的,在它下面的頁面須要修改不一樣代碼的地方使用@RenderBody()方法

複製代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <title>個人網站 - @Page.Title</title> </head> <body> @RenderBody() </body> </html>
複製代碼
@{
    Layout = "/LayoutPage.cshtml";
    Page.Title = "測試頁面哦";
}

<p>This is a layout test</p>

 

頁面(Page)

 page是當須要在一個頁面中,輸出另一個razor文件的內容時候用到,好比頭部或者尾部這些公共的內容時候須要用到。輸出就使用 @RenderPage()方法

如:A頁面中也要把B頁面的內容輸出

A頁面:

<p> @RenderPage("/b.cshtml") </p>

b頁面的代碼以下:

<font color="red">這是一個子頁面</font>

 

Section區域

    Section是定義在Layou的中使用的。在Layout的頁面中用。在要Layout的父頁面中使用@RenderSection("Section名稱 ")

定義:

複製代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <title>個人網站 - @Page.Title</title> </head> <body>  @RenderSection("SubMenu") @RenderBody() </body> </html>
複製代碼

在它的子頁面中使用

@section SubMenu{
    Hello This is a section implement in About View.
 }

 若是在子頁面中沒有去實現了SubMenu了,則會拋出異常。咱們能夠它的重載@RenderSection("SubMenu", false)

複製代碼
 @if (IsSectionDefined("SubMenu"))
        {
            @RenderSection("SubMenu", false)
        }
        else
        {
            <p>SubMenu Section is not defined!</p> }
複製代碼

 

 Helper

   helper就是能夠定義可重複使用的幫助器方法,不只能夠在同一個頁面不一樣地方使用,還能夠在不一樣的頁面使用。

如在cshtml中那麼寫:

複製代碼
@helper sum(int a,int b)
{  
 var result=a+b;
  @result } <div > <p>@@helper的語法</p> <p>2+3=@sum(2,3)</p>
<p>5+9=@sum(5,9)</p>
</div>
複製代碼

咱們一般會把一類Helper放在一個單獨的cshtml文件中,而文件名就至關於一個類名。

我把sum放在HelpMath.cshtml文件中,則咱們在那上面cshtml中的使用方法是:

<p>2+3=@HelpMath.sum(2,3)</p> <p>5+9=@HelpMath.sum(5,9)</p>

另外,系統還爲咱們提供了一些列的Helper,用來簡化Html的書寫。這些Helper放在@Html中,咱們能夠方便的使用:

<p> @Html.TextBox("txtName") </p>

 本文頁面來源地址:http://www.cnblogs.com/dengxinglin/p/3352078.html

 

做者:劃風
郵箱:emaisi@hotmail.com
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利.
相關文章
相關標籤/搜索