Html.ActionLink с указанным идентификатором HTML? - PullRequest
37 голосов
/ 02 сентября 2010

Я бы хотел, чтобы подобное генерировалось с Html.ActionLink идентификатором HTML, чтобы я мог изменять 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 ]

51 голосов
/ 02 сентября 2010

Вы были на правильном пути. Я не уверен, почему это не сработало для вас, поскольку ваш код содержит опечатку, которая вызвала бы ошибку } 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 параметр.

5 голосов
/ 02 сентября 2010

Попробуйте это:

<%: Html.ActionLink("Some View", "Index", "controller", null, new {id="something}")%>
2 голосов
/ 02 сентября 2010

В основном это выдает ошибку, потому что не существует перегрузки метода, имеющей нужную подпись.

Ближайшая к вам нужная подпись

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

)

Вы передаете атрибут id в значение маршрута, поэтому он дает вам забавную ссылку.передайте значение null в значение маршрута, затем добавьте htmlattributes

1 голос
/ 10 декабря 2014

попробуйте

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