当前位置:  开发笔记 > 编程语言 > 正文

在ASP.NET MVC Html.ActionLink中包含锚标记

如何解决《在ASP.NETMVCHtml.ActionLink中包含锚标记》经验,为你挑选了4个好方法。

在ASP.NET MVC中,我正在尝试创建一个包含锚标记的链接(即,将用户指向页面,以及页面的特定部分).

我尝试创建的URL应如下所示:

Title for a section on the page

我的路由设置符合标准:

routes.MapRoute("Default", "{controller}/{action}/{categoryid}"); 

我正在使用的操作链接语法是:

<%foreach (Category parent in ViewData.Model) { %>

<%=parent.Name %>

    <%foreach (Category child in parent.SubCategories) { %>
  • <%=Html.ActionLink(x => x.Subcategory(parent.ID), child.Name) %>
  • <%} %>
<%} %>

我的控制器方法如下:

public ActionResult Subcategory(int categoryID)
{
   //return itemList

   return View(itemList);
}

以上正确返回URL如下:

Title for a section on the page

我无法弄清楚如何添加#section12部分."section"一词只是我用来分解页面部分的约定,而12是子类别的ID,即child.ID.

我怎样才能做到这一点?



1> Brad Wilson..:

ActionLink的重载采用片段参数.传递"section12"作为你的片段将获得你所追求的行为.

例如,调用LinkExtensions.ActionLink方法(HtmlHelper,String,String,String,String,String,String,Object,Object):

<%= Html.ActionLink("Link Text", "Action", "Controller", null, null, "section12-the-anchor", new { categoryid = "blah"}, null) %>


这应该是答案.

2> LorenzCK..:

我可能会手动构建链接,如下所示:

#section12">link text


应该像@Brad Wilson所描述的那样使用ActionLink的重载.
@mattruma抱歉,我不同意.吻.为什么一个成员充满了参数,其中一些参数保留为null,只需明确说明即可.任何人都可以看到上述意味着布拉德的回答是错综复杂的,并要求你深入了解intellisense.太多的参数是公认的反模式..http://c2.com/cgi/wiki?TooManyParameters
我同意.这两种方法都有效,但由于在URL中指定片段的方式在不久的将来不会改变,我认为这种方式实际上更具可读性和更清晰.如果需要,您仍然可以使用自定义方法扩展`Url`或`Html`对象,该方法包括添加片段字符串的简单方法.

3> PussInBoots..:

我不记得在哪个版本的ASP.NET MVC(ASP.NET MVC 3+我相信)/ Razor参数标签声明或其他所谓的(参数:x)功能被引入,但对我来说这绝对是正确的方法在ASP.NET MVC中使用锚点构建链接.

@Html.ActionLink("Some link text", "MyAction", "MyController", protocol: null, hostName: null, fragment: "MyAnchor", routeValues: null, htmlAttributes: null)

甚至连这个答案的 Ed Blackburns反模式论证也无法与之竞争.



4> Zapnologica..:

我就是这样做的:

Features

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有