尝试为通过Razor @ Html.ActionLink助手创建的[a]标签分配ID属性时,我得到一个奇怪的结果
我的原始代码是:
@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”,新{@id =“orderlink”},null)
我得到一个如下所示的链接: http://www.mysite.com/NewOrder/Index/orderlink
我不希望将orderlink添加到我的链接/路由中。我想将它添加到[a]标签属性中。请参阅问题的顶部。
我想得到这个:
<a id="orderlink" href="/tcap/NewOrder/Index" >Create New Order</a>
答案 0 :(得分:6)
尝试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
网址
EDIT2 :
如果您愿意,<a id="orderlink" href="/tcap/NewOrder/Index" >Create New Order</a>
使用此选项,将HTML属性作为this overload
的第五个参数传递@Html.ActionLink("Create New Order", "Index",
"NewOrder",null,new {@id="orderlink"})
答案 1 :(得分: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次重载,所以很容易错过正确的实现)