@Styles.Render(),@Scripts.Render,@Html.ActionLink(),@RenderBody(),@RenderSection() 用法說明


一、首先新建一個MVC項目,打開_Layout.cshtml。見圖

這是微軟自動生成的一個母版頁,我們從母版頁開始看

1.@Styles.Render("~/Content/css")

在頁面上可以用@Styles.Render("~/Content/css") 來加載css

首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件,開開這個文件看下

我們會發現這里設置了兩個css樣式,設置好后可以理解為一種鍵值對的形式,引用的時候直接@Styles.Render("~/Content/css")取鍵就可以

2.@Scripts.Render("~/bundles/modernizr")

這個也和css設置是一樣的,調用方式也是相同的。

3.@Html.ActionLink 這個着重說一下,

   在MVC的Rasor視圖引擎中,微軟采用一種全新的方式來表示從前的超鏈接方式,它代替了從前的繁雜的超鏈接標簽,讓代碼看起來更加簡潔。通過瀏覽器依然會解析成傳統的a標簽。除此之外,還允許我們添加Html屬性。下面來看看@Html.ActionLink()的使用方法吧。

(1)@Html.ActionLink("linkText", "actionName")

       這種重載的第一個參數是該鏈接要顯示的文字,第二個參數是對應的控制器的方法(Action),默認控制器為當前頁面對應的控制器。例如,當前頁面的控制器為ProductsController:@Html.ActionLink("detial", "Detial")會生成<a href="/Products/Detail">detail</a>   

 

  (2) @Html.ActionLink("linkText", "actionName","controllerName") 

  該重載比第一個重載多了一個參數,他指定了控制器的名稱。

  例如,@Html.ActionLink("detail", "Detail", "Products")會生成<a href="Products/Detail">detail</a>

  (3) @Html.ActionLink("linkText", "actionName","controllerName",routeValues) 

       相對於上一種重載,該重載新增了routeValue參數,routeValue可以向action傳遞參數。

  例如,@Html.ActionLink("detail", "Detail", ,"Products",new{ id = 1 })會生成<a href="Products/Detail/1">detail</a>

  (4)@Html.ActionLink("linkText", "actionName", "controllerName", routeValues, htmlAttributes)

      這是最全的重載,可以設置標簽和樣式。

      例如,@Html.ActionLink("detail", "Detail", "Products",new{ id = 1 }, new{ target = "_blank" })會生成<a href="Products/Detail/1" target="_blank">detail</a>,需要注意的是如果寫成new{ target="_blank", class="className" }則會報錯,因為Class是C#的關鍵字,此時應該寫成@class="className"。

 4.@RenderBody()標簽

    這個標簽就是一個占位符,當一個視圖使用了布局頁的時候,該視圖就會被加載到占位符的位置

5.@RenderSection("scripts", required: false)

布局頁面還有節(Section)的概念,也就是說,如果某個視圖模板中定義了一個節,那么可以把它單獨呈現出來

第一個參數是設置一個節,也可以說相當於一個占位符的作用

如圖設置一個名為hahah的節,我們去在子頁面用一下

看使用效果。但是當我們在母版頁設置了這個節點,子頁面不實現的話,就會報錯,刪掉@section hahha再運行

這是因為我在_Layout.cshtml中使用的是@RenderSection("hahah")他要求所有子頁都要實現,

可以使用它的另外一個重載@RenderSection("hahah",false),第二個參數代表它不是必須的,就不會拋出異常。 還有,當我在母版頁中定義了@RenderSection("SubMenu",false)的時候,我希望當所有子頁都沒有實現這個Section的時候,母版頁可以有自己的呈現內容,就可以用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM