2

尝试将 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("创建新订单", "索引", "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>
4

2 回答 2

6

试试这个超载。

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)

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

使用这个重载

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

这会给你 mysite.com/NewOrder/Index网址

EDIT2:如果你愿意, <a id="orderlink" href="/tcap/NewOrder/Index" >Create New Order</a>

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

@Html.ActionLink("Create New Order", "Index", 
            "NewOrder",null,new {@id="orderlink"})
于 2012-08-03T16:30:06.723 回答
2

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

带参数的 ASP.NET MVC 基本路由

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

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

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

于 2012-08-03T16:34:13.330 回答