在ASP.NET MVC Html.ActionLink中包含一个锚标签

在ASP.NET MVC中,我试图创build一个链接,其中包含一个定位标记(也就是将用户导向页面和页面的特定部分)。

我正在尝试创build的url应如下所示:

<a href="/category/subcategory/1#section12">Title for a section on the page</a> 

我的路由设置了标准:

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

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

 <%foreach (Category parent in ViewData.Model) { %> <h3><%=parent.Name %></h3> <ul> <%foreach (Category child in parent.SubCategories) { %> <li><%=Html.ActionLink<CategoryController>(x => x.Subcategory(parent.ID), child.Name) %></li> <%} %> </ul> <%} %> 

我的控制器方法如下:

 public ActionResult Subcategory(int categoryID) { //return itemList return View(itemList); } 

以上正确返回一个URL如下:

 <a href="/category/subcategory/1">Title for a section on the page</a> 

我不知道如何添加#section12部分。 “section”这个词就是我用来分解页面部分的约定,12是子类别的ID,即child.ID。

我该怎么做?

我可能会手动build立链接,如下所示:

 <a href="<%=Url.Action("Subcategory", "Category", new { categoryID = parent.ID }) %>#section12">link text</a> 

有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) %> 

我不记得在哪个版本的ASP.NET MVC(ASP.NET MVC 3 +我相信)/ Razor parameterlabeldeclaration或任何它被称为(参数:x)function介绍,但对我来说这绝对是正确的方法用ASP.NET MVC中的一个锚点build立一个链接。

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

从这个答案甚至没有埃德·布莱克本斯反模式的论点可以与之竞争。

我只是这样做了:

 <a href="@Url.Action("Index","Home")#features">Features</a> 

这是真实的生活的例子

 @Html.Grid(Model).Columns(columns => { columns.Add() .Encoded(false) .Sanitized(false) .SetWidth(10) .Titled(string.Empty) .RenderValueAs(x => @Html.ActionLink("Edit", "UserDetails", "Membership", null, null, "discount", new { @id = @x.Id }, new { @target = "_blank" })); }).WithPaging(200).EmptyText("There Are No Items To Display") 

目标页面有TABS

 <ul id="myTab" class="nav nav-tabs" role="tablist"> <li class="active"><a href="#discount" role="tab" data-toggle="tab">Discount</a></li> </ul> 

如果您将ActionFilter应用于子类别的操作方法,我的解决scheme将工作,只要您始终要将用户redirect到相同的书签:

http://spikehd.blogspot.com/2012/01/mvc3-redirect-action-to-html-bookmark.html

它修改HTML缓冲区,并输出一小段JavaScript来指示浏览器追加书签。

你可以修改javascript手动滚动,当然不是在URL中使用书签!

希望它有助于:)

我做到了这一点,它适用于redirect到其他视图,我认为如果您添加#sectionLink后它将工作

 <a class="btn yellow" href="/users/Create/@Model.Id" target="_blank"> Add As User </a>