細說@Html.ActionLink()的用法


一、@Html.ActionLink()概述

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

二、@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", routeValues)

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

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

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

  htmlAttribute可以設置<a>標簽的屬性。

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

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

  該種重載匯聚了以上此種重載的所有參數,是功能最全的重載。

三、@Url.Action(),@Html.ActionLink(),Html.RenderAction()和@Html.Action()的區別

1. 返回值不同

  • @Html.Action()返回值為MvcHtmlString。Html.Action比較靈活,可以直接寫在頁面上,也可以把它賦值給某一變量,處理之后寫在頁面上。
  • Html.RenderAction()返回值為void。Html.RenderAction必須寫在@{}內,直接由Response對象輸出。例:@{ Html.RenderAction("Index", "Import");}
  • @Html.ActionLink()返回值也是MvcHtmlString。
  • @Url.Action()返回值為string。MvcHtmlString本質上也是string,兩者都可以直接現在頁面上。

2. 生成的東西不同

  • @Html.ActionLink("myLink", "CCC", "Import")生成<a href="/Import/CCC">myLink</a>
  • @Url.Action("CCC", "Import")直接生成字符串"/Import/CCC",沒有任何tag標簽。


免責聲明!

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



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