具有指定HTML ID的Html.ActionLink?

时间:2010-09-01 22:31:28

标签: css asp.net-mvc asp.net-mvc-2 html-helper actionlink

我想用Html.ActionLink HTML ID生成类似内容,以便根据我的位置更改CSS。我有一个带有一组链接的MasterPage,我想区分活动的“Tab”与Jquery改变活动的css #id

现在我正在使用:

<%: Html.ActionLink("Some View", "Index", "controller")%>

它生成:

<a href="/controller">Some View</a>

我想生成:

<a id="something" href="/controller">Some View</a>

这可能吗?我试过了:

<%: Html.ActionLink("Some View", "Index", "controller", new {id="blahbla")%>

但这会产生:

<a href="/controller/Length?5">Some View</a>

4 个答案:

答案 0 :(得分:50)

你走在正确的轨道上。我不确定为什么它不适合你,因为你的代码有一个错误,会产生} expected错误。您正在寻找以下内容:

 <%= Html.ActionLink("Test Link", "SomeAction", "SomeController",
         null, new {id = "someID" }) %> 

哪个会产生以下HTML:

<a href="/SomeController/SomeAction" id="someID">Test Link</a>

编辑:我刚刚意识到问题是什么,因为我误读了你的尝试。您正在使用错误的重载来传递id html元素。您可能会将new { id="blah" }参数传递给routeValues参数,这将导致在构建路径链接时使用它,而不是您想要的htmlAttributes参数。

我认为你正在使用:

ActionLink(string linkText, string actionName, Object routeValues,
    Object htmlAttributes)

当您需要使用的是以下重载时,就像我在上面的答案中所做的那样:

ActionLink(string linkText, string actionName, string controllerName,
    Object routeValues, Object htmlAttributes)

确保将new { id="blah" }传递到htmlAttributes参数。

答案 1 :(得分:5)

试试这个:

<%: Html.ActionLink("Some View", "Index", "controller", null, new {id="something}")%>

答案 2 :(得分:2)

基本上它给出了一个错误,因为没有方法重载具有你想要的签名。

与您所需的签名最接近的签名是

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

您正在将id属性传递给routevalue,这就是为什么它会为您提供有趣的href。将null传递给routevalue,然后添加你的htmlattributes

答案 3 :(得分:1)

试试这个

@Html.ActionLink("Forgot your access?", "RecoverPassword", 
"Account", new { area = "registration-full.html" }, 
new { @class = "col-xs-6", id = "login-forget-link" })