Html.ActionLink(转载)
@Html.ActionLink
代码:
<h2>HtmlHelper</h2>
@Html.ActionLink("默认","Index")
@Html.ActionLink("带控制器", "Index", "RsvpForm")
@Html.ActionLink("带默认路由参数", "Index", new {page=1 })
@Html.ActionLink("带控制器和默认路由参数", "Index", new { page = 1 }, new {id="id001" })
@Html.ActionLink("带参数和属性", "Index", "RsvpForm", new { page = 1 }, new { id = "aId", @class = "aClass", @style = "color:red" })
<h2>html action</h2>
@*@Html.Action("Index")
@Html.Action("Index", new { page = 1 });
@Html.Action("Index","Home")
@Html.Action("Index", "Home", new { page = 1 });
*@
@*@Html.Action("MyMenu")
@Html.Action("MyMenu",new MvcApplication1.Models.MenuItem(){Text="microsoft",Url="http://www.ms.com"})*@
@{Html.RenderAction("MyMenu");}
@{Html.RenderAction("MyMenu","Home");}
@{Html.RenderAction("MyMenu", new MvcApplication1.Models.MenuItem() { Text = "microsoft", Url = "http://www.ms.com" });}
@{Html.RenderAction("MyMenu","Home", new MvcApplication1.Models.MenuItem() { Text = "microsoft", Url = "http://www.ms.com" });}
<h2>html urlAction</h2>
@Url.Action("MyMenu")<br/>
@Url.Action("MyMenu","Home")<br />
@Url.Action("MyMenu", new MvcApplication1.Models.MenuItem() { Text = "microsoft", Url = "http://www.ms.com" })<br/>
@Url.Action("MyMenu","Home", new MvcApplication1.Models.MenuItem() { Text = "microsoft", Url = "http://www.ms.com" })<br/>
后台代码
//这里需要注意的是Menu操作使用了ChildActionOnlyAttribute特性标记,该特性设置防止了运行时直接通过URL来调用Menu操作,只能通过Action或RenderAction操作。在MVC3中,ControllerContext有一个IsChildAction属性,如果通过Action或RenderAction操作则为true,通过URL操作则为false,同时一些操作过滤器不同于子操作如:AuthorizeAttribute和OutputCacheAttribute
[ChildActionOnly]
// [ActionName("CoolMenu")]
//当调用RenderAction方法时,需要确保操作名是CoolMenu而不是Menu。
public ActionResult MyMenu(MenuItem mi)
{
Menu m = new Menu();
List<MenuItem> items = new List<MenuItem>();
items.Add(new MenuItem() { Text = "Baidu", Url = "http://www.baidu.com" });
items.Add(new MenuItem() { Text = "Sina", Url = "http://www.Sina.com" });
items.Add(new MenuItem() { Text = "IBM", Url = "http://www.ibm.com" });
items.Add(new MenuItem() { Text = "Sohu", Url = "http://www.sohu.com" });
m.Items = items;
// 这里,如果传入的参数不为空,则将Item加入到菜单中
if (!(string.IsNullOrEmpty(mi.Text)))
m.Items.Add(mi);
return PartialView(m);
}
表现:


一 Html.ActionLink("linkText","actionName")
该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法,默认控制器为当前页面的控制器,如果当前页面的控制器为Products,则 Html.ActionLink("detail","Detail") 则会生成 <a href="/Products/Detail">all</a>
二 Html.ActionLink("linkText","actionName","controlName")
该重载比第一个重载多了一个参数,他指定了控制器的名称,如Html.ActionLink("detail","Detail","Products")则会生成<a href="Products/Detail">all</a>
三 Html.ActionLik("linkText","actionName",routeValues)
routeValue可以向action传递参数,如Html.ActionLink("detail","Detail",new { id=1})会生成 <a href="Products/Detail/1">detail</a>, 此处假设当前的控制器是Products.
四 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是关键字,此处应该写成 @class="className"。
五 Html.ActionLink("linkText","actionName","controlName",routeValues,htmlAttributes)
该重载包含了上面提到的所有参数类型
六 Html.ActionLink("linkText","actionName","controlName","protocol","hostName","fragment",routeValues,htmlAttributes)
该重载使用比较少,他可以指定访问的协议,域名还有锚点,如 Html.ActionLink("liuwu","Detail","Products","http","www.liuwu.me","name",null,null) 可以生成 <a href="http://www.liuwu.me/Products/Detail#name">liuwu</a>
Html.Action返回值为MvcHtmlString
Html.RenderAction返回值为void
因此注定了它们的行为是不同的。
Html.RenderAction必须写在@{}内,直接有Response对象输出。
Html.Action也可以直接写在界面上,也可把该值赋值给某一变量,处理后在写页面上。
Html.Action更灵活一点。
@{ Html.RenderAction("Index", "Import");}
@Html.Action("Index", "Import")
@Html.ActionLink返回值也是MvcHtmlString
@Url.Action返回值也是string
MvcHtmlString 本质上也就是string,两者都可以直接写在页面上。
@Html.ActionLink("mylink"," CCC ", "Import")
@Url.Action("CCC", "Import")
不同点在于Html.ActionLink会生成<a href="/Import/CCC">mylink</a>,带<a>标签,而Url.Action直接生成的是string。没有任何tag标签。
Content方法可以将应用程序中的相对路径转换为绝对路径,如下:
<script src="@Url.Content("~/Scripts/sdf.js")"</script>
在传递为Content方法的字符串前使用波浪线作为第一个字符,无论应用程序部署在什么位置,该辅助方法都可以指向正确的资源,如果不加波浪线,挪动应用程序的位置则生成的URL
Html.Partial和Html.RenderPartial
Pattial方法将分部视图渲染成字符串,该方法共有四个重载版本,如下:
Public void Partial (string partialViewName);
Public void Partial (string partialViewName,object model);
Public void Partial (string partialViewName,ViewDataDictionary viewData);
Public void Partial (string partialViewName,object model,ViewDataDictionary viewData);
这里没有毕业为视图指定路径和文件扩展名,直接如下:
@Html.Partial("AlbumDisplay");
RenderPartial与Partial方法类似,但是RenderPartial不是返回字符串而是直接写入相应流中,故需要这样使用@{Html.RenderPartial("AlbumDisplay");}
Partial方法相对灵活,RenderPartial方法相对于大量使用更有优势
@* Html.Partial("_partViewFortest")*@
@* @Html.Partial("_partViewFortest", new GuestResponse() { Name = "jim", Email = "123213", Phone = "123", WillAttend = true })*@
@* @{Html.RenderPartial("_partViewFortest");}*@
@{Html.RenderPartial("_partViewFortest", new GuestResponse() { Name = "jim", Email = "123213", Phone = "123", WillAttend = true });}
@model MvcApplication1.Models.GuestResponse
@using (Html.BeginForm())
{
<p>
Your name:@Html.TextBoxFor(x => x.Name)</p>
<p>
your email:@Html.TextBoxFor(x => x.Email)</p>
<p>
your phone:@Html.TextBoxFor(x => x.Phone)</p>
<p>
will you attend?
@Html.DropDownListFor(x => x.WillAttend, new[]{
new SelectListItem(){Text="yes, I'll be there",Value=bool.TrueString},
new SelectListItem(){Text="no,I can't come",Value=bool.FalseString}
}, "Choose an option")
</p>
<input type="submit" value="Submit RSVP" />
}
2.2RouteLink使用Route规则
除了这些协同的用法,RouteLink还支持使用Route规则名来创建连接,例如我们在Global.asax文件中添加一个Route规则
1: routes.MapRoute( 2:"about",//这是规则名 3:"about",//url 4:new {controller = "Home", action = "about"} 5: ); 那么我们就可以使用这个Route规则1: <%=Html.RouteLink("关于", "about", new { })%>
2: <%=Html.RouteLink("关于", "about", new { page = 1 })%>
3: <%=Html.RouteLink("关于", "about", new { page = 1 }, new { id = "link1" })%>
来生成如下的HTML:
1:<ahref="/about">关于</a>
2:<ahref="/about?page=1">关于</a>
3:<ahref="/about?page=1"id="link1">关于</a>
@Html.RouteLink("默认", new { controller = "Home", action = "Index" })
@Html.RouteLink("页面显示的文字", new { action = "index", page = 1 }, new { id = "link1" })
@Html.RouteLink("关于","abc",new{page=1})
@Html.RouteLink("关于", "abc", new { page = 1 }, new { id = "link1" })
routes.MapRoute("abc", "abc", new { controller = "Home", action = "about" });
如果我们想要让上文中的t1初始时就有一个值,比如 “重典”那么我们可以按以下方式1: <%=Html.TextBox("t1","重典") %>如果数据是从数据库中读取,即得到数据是从Action中获取的,那么我们可以在Action中使用ViewData传递Action:1: ViewData["name"]="重典";View:1: <%=Html.TextBox("t1",ViewData["name"]) %>以上方法看似简单,其实ASP.NET MVC为我们提供了更为简便的绑定方式---只要保证ViewData的Key与Helper所生成元素的name保持一致就可以自动绑定:Action:1: ViewData["t1"]="重典";View:1: <%=Html.TextBox("t1") %>这样就可以自动绑定了
Html.ActionLink(转载)的更多相关文章
- 转载 @html.ActionLink的几种参数格式
一 Html.ActionLink("linkText","actionName") 该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法, ...
- 【总结】详细说说@Html.ActionLink()的用法
一.@Html.ActionLink()概述 在MVC的Rasor视图引擎中,微软采用一种全新的方式来表示从前的超链接方式,它代替了从前的繁杂的超链接标签,让代码看起来更加简洁,通过浏览器依然会解析成 ...
- 为 ASP.NET Web API 创建帮助页面(转载)
转载地址:http://www.asp.net/web-api/overview/creating-web-apis/creating-api-help-pages 当创建web API 时,经常要创 ...
- MVC @helper (转载)
转载地址:http://gaoling386.blog.163.com/blog/static/5404602420130595842894/ ASP.NET MVC 3支持一项名为“Razor”的新 ...
- ASP.NET Identity 二 (转载)
来源:http://www.cnblogs.com/r01cn/p/5180892.html#undefined 推荐看原文,这里转载是怕好文章消失了. 注:本文是[ASP.NET Identity系 ...
- ASP.NET MVC中Section、Partial View 和 Child Action(转载)
概括的讲,View中的内容可以分为静态和动态两部分.静态内容一般是html元素,而动态内容指的是在应用程序运行的时候动态创建的内容.给View添加动态内容的方式可归纳为下面几种: Inline cod ...
- 【总结】详细说说Html.ActionLink的用法
Html.ActionLink概述 在MVC的Rasor视图引擎中,微软采用一种全新的方式来表示从前的超链接方式,它代替了从前的繁杂的超链接标签,让代码看起来更加简洁,通过浏览器依然会解析成传统的a标 ...
- 【转载】WebApi 接口测试工具:WebApiTestClient
正文 前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点 ...
- Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)
作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...
随机推荐
- 使用SWFUpload插件上传文件
演示代码由两部分组成,包括前台文件和后台文件: 1.前台文件index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...
- 14-C语言宏
目录: 一.宏定义 二.#x,##x使用和预定义宏 三.宏的高级使用(条件编译) 回到顶部 一.宏定义 1 宏是常用的预处理功能之一,是在编译之前进行宏替换,即将宏名替换成所定义的宏体. 2 优点:可 ...
- Linux中的盘符问题
在windows 中像 C.D.E.F这些都可以当盘符,就是说对应了我们所看到的C盘,D盘,E盘,F盘.然而是不是只能加26个硬盘了呢? 盘符到硬盘也只是一个对映关系,我们也是可以建立从一个文件夹到一 ...
- Android 5.x新特性之elevation(阴影),tinting(着色)以及clipping(剪裁)
快过年了,公司也没事做了, 自己也闲了下来,一天天呆着真没意思,闲来没事自己研究研究了Google I/O 2014 发布 Material Design设计,人性化的风格,丰富的色彩,使人机交互更完 ...
- CCNP路由实验(2) -- OSPF
OSPF作为一种内部网关协议(IGP),用于在同一个AS中的路由器之间交换路由信息.OSPF的特性如下:1.可适应大规模网络2.收敛速度快3.无路由环路4.支持VLSM和CIDR5.支持等价路由6.支 ...
- 航道水下地形DEM构建方法比较
论文<航道水下数字高程模型的构建方法> 对航道水下地形建立DEM,技术路线:先构建TIN,手动去除多余三角边,再利用CAD ObjectARX二次开发接口中提供的几种内插方法生成grid ...
- 几个学习Maven不错的网址
几个学习Maven不错的网址:---------------------------------------------------1.Maven官方网站 http://maven.apache.or ...
- 【玩转Ubuntu】04. Ubuntu上配置git环境
1. 使用PPA安装Git PPA,表示 Personal Package Archives,也就是个人软件包集. 有很多软件因为种种原因,不能进入官方的 Ubuntu 软件仓库. 为了方便 Ubun ...
- hdu 4873 ZCC Loves Intersection(大数+概率)
pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...
- java思考题
1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗? public class EnumTest { public static ...