【问题标题】:Html.ActionLink helper creating incorrect link when trying to apply IDHtml.ActionLink 帮助器在尝试应用 ID 时创建不正确的链接
【发布时间】:2012-08-03 16:29:08
【问题描述】:

尝试将 ID 属性分配给通过 Razor @Html.ActionLink 帮助程序创建的 [a] 标记时,我得到了一个奇怪的结果

我原来的代码是这样的:

 @Html.ActionLink("Create New Order", "Index", "NewOrder")

这可以正常工作并创建一个链接为http://www.mysite.com/NewOrder,但我想为我的元素添加一个 ID 标签。

然后我尝试了这个

 @Html.ActionLink("Create New Order", "Index", "NewOrder", new {@id = "orderlink"})

这会创建一个http://www.mysite.com/Orders?Length=8的链接

更新:

当我使用提供的解决方案时,

@Html.ActionLink("创建新订单", "Index", "NewOrder", new { @id = "orderlink" }, null)

我得到一个如下所示的链接: http://www.mysite.com/NewOrder/Index/orderlink

我不希望将 orderlink 添加到我的链接/路线中。我希望它添加到 [a] 标签属性中。请参阅问题的顶部。

我想得到这个:

 <a id="orderlink" href="/tcap/NewOrder/Index" >Create New Order</a>

【问题讨论】:

  • 你的控制器名称和动作名称是什么?
  • Controller 是 NewOrder,Action 是 Index
  • @Shyju 快到了。这为我的 [a] 标签提供了 href 属性的正确值,但我需要设置 id 属性。

标签: asp.net-mvc-3 razor


【解决方案1】:

尝试this 过载。

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    Object routeValues,
    Object htmlAttributes
)

所以你的代码将是

 @Html.ActionLink("Create New Order", "Index", "NewOrder", 
              new {@id = "orderlink"},null)

编辑:根据您的评论/更新的问题

使用this重载

 @Html.ActionLink("Create New Order", "Index", "NewOrder")

这会给你mysite.com/NewOrder/Index url

EDIT2: 如果你愿意,&lt;a id="orderlink" href="/tcap/NewOrder/Index" &gt;Create New Order&lt;/a&gt;

使用这个,将HTML属性作为this重载的第五个参数传递

@Html.ActionLink("Create New Order", "Index", 
            "NewOrder",null,new {@id="orderlink"})

【讨论】:

  • +1 太快了,要从我前几天给出的答案中“粘贴”一个与此相同的答案:)
  • @jimtollan:谢谢 :) 但是我被当天的声誉上限政策所困扰! :(
  • 嘿。昨晚我偶然发现了这个问题。
  • Giovanni - 一切都很美好(以它自己的方式 - 嗯,感觉有一首歌正在播放):)
  • 您的控制器名称是什么?那是“新订单”吗?
【解决方案2】:

前几天在这里回答了这个问题:

ASP.NET MVC basic routing with parameters

简而言之,给重载添加一个最终的 null 参数:

@Html.ActionLink("Create New Order", "Index", "NewOrder", 
                  new {@id = "orderlink"}, null)

添加null 作为最终参数 (htmlAttributes) 是您在这种情况下所缺少的(Html.ActionLink 有 9 个重载,因此很容易错过正确的实现)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多