细说@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标签。

最新文章

  1. 8、ASP.NET MVC入门到精通——View(视图)
  2. 2016&quot;百度之星&quot;-资格赛
  3. 【转载】存储scale-up和scalce-out架构
  4. iOS从健康app中获取步数信息
  5. VM Depot 新功能:直接通过 Windows Azure 管理门户部署虚拟机
  6. JDK 环境变量配置(Mac)
  7. [Cocos2d-x]博客推荐
  8. [Leetcode]-ReverseLinkedList
  9. 在ubuntu14.04上安装mono4.4 + jexus + mvc6
  10. 标准会话对象——StandardSession
  11. AngularJS路由变化 监听方法
  12. Java_Object_Date_System等常用类
  13. 使用VSTS的Git进行版本控制(三)——评审历史记录
  14. 定制库到maven库
  15. AGC 015C.Nuske vs Phantom Thnook(思路 前缀和)
  16. 2016 ACM-ICPC EC-Final
  17. jersey2+freemarker+spring3的集成
  18. 通过openURL的方式启动其它App
  19. [SharePoint 2010]Sandboxed Solution (沙箱解決方案)
  20. centos的 / ~ - 的意思

热门文章

  1. centos7安装elasticsearch
  2. RPC原理及实现
  3. Python2还是Python3
  4. Redis数据结构之intset
  5. hadoop1.2开发环境搭建
  6. web中cookie的使用
  7. skywalking6.0.0安装配置(windows),以mysql作为储存。
  8. Android Studio 常用快捷键及常用设置
  9. PageHelper补充
  10. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D