在ASP.NET MVC中,包含一个锚点标签的Html.ActionLink。

9 浏览
0 Comments

在ASP.NET MVC中,包含一个锚点标签的Html.ActionLink。

在ASP.NET MVC中,我试图创建一个包含锚点标签的链接(即将用户引导到页面的特定部分)。\n我想要创建的URL应该如下所示:\n

页面上的一节标题

\n我的路由设置如下:\n

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

\n我使用的ActionLink语法是:\n<%foreach (Category parent in ViewData.Model) { %>\n

<%=parent.Name %>

\n

    \n<%foreach (Category child in parent.SubCategories) { %>\n

  • <%=Html.ActionLink(x => x.Subcategory(parent.ID), child.Name) %>
  • \n<%} %>\n

\n<%} %>\n\n我的控制器方法如下:\n

public ActionResult Subcategory(int categoryID)
{
   //返回项目列表
   return View(itemList);
}

\n上述代码正确返回以下URL:\n

页面上的一节标题

\n我无法弄清如何添加#section12部分。 \"section\"一词只是我用来分隔页面部分的约定,而12是子类别的ID,即child.ID。\n我该如何做到这一点?

0
0 Comments

在ASP.NET MVC中,使用Html.ActionLink方法可以创建一个链接。但是,有时我们可能需要在链接中包含一个锚点(anchor)。下面是一个示例代码:

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

这个代码中的`fragment: "MyAnchor"`参数指定了链接的锚点。通过这种方式,我们可以很方便地在ASP.NET MVC应用程序中创建带有锚点的链接。

这个功能可能是在ASP.NET MVC 3或更高版本中引入的,但具体是哪个版本我记不清了。不过,在我看来,这绝对是在ASP.NET MVC中构建带有锚点链接的正确方式。

这种方式的优势甚至可以抵消Ed Blackburn在这个答案中提到的反模式(antipattern)的论点。

这让我受益匪浅。我将你的帖子作为我的解决方案在这里引用:stackoverflow.com/questions/32420028/...

通过使用`fragment`参数,我们可以轻松地在ASP.NET MVC应用程序中创建带有锚点的链接。这个功能在ASP.NET MVC 3或更高版本中可用。希望这篇文章对你有所帮助!

0
0 Comments

在ASP.NET MVC中,我们经常使用Html.ActionLink来生成链接。然而,有时我们需要在链接中包含锚标签。以下是一个使用Html.ActionLink生成链接并包含锚标签的示例:

#section12">link text

上述代码手动构建了一个包含锚标签的链接。但是,实际上我们可以使用ActionLink的重载方法来实现相同的功能。

有人认为使用ActionLink的重载方法更好,因为它更加简洁和可读。他们认为使用过多的参数是一个反模式,并提供了一个链接来支持他们的观点:c2.com/cgi/wiki?TooManyParameters

他们认为,如果需要的话,我们可以扩展Url或Html对象,添加一个自定义方法来简化添加锚标签的过程。

总之,无论是手动构建链接还是使用ActionLink的重载方法,都可以实现在ASP.NET MVC中包含锚标签的链接。使用哪种方法取决于个人的偏好和项目的需求。

0
0 Comments

问题的原因是使用Html.ActionLink方法创建的链接无法包含锚点(anchor tag)。Html.ActionLink方法有多个重载,其中有一个重载可以接受fragment参数,但是需要通过指定控制器名称来调用该重载。如果控制器名称不正确,将会导致运行时异常。

解决方法是使用Url.Action方法来创建带有锚点的链接。Url.Action方法可以直接指定锚点,而不需要通过控制器名称来调用。另外,.Net Core版本的Url.Action方法也有一个重载可以接受fragment参数。

下面是解决方法的示例代码:

#section12">Link Text

通过以上代码可以创建一个带有锚点的链接。其中"Action"和"Controller"分别表示要链接到的动作和控制器的名称,"section12"是锚点的名称。

问题的原因是Html.ActionLink方法无法直接创建带有锚点的链接。解决方法是使用Url.Action方法,并在链接中直接指定锚点。

0