Html.ActionLink с указанным идентификатором HTML?
Я хотел бы дать подобное, сгенерированное с 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>
Ответы
Ответ 1
Ты был на правильном пути. Я не уверен, почему это не сработало для вас, так как ваш код имеет опечатку, которая вызвала бы ошибку } 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
.
Ответ 2
Попробуйте следующее:
<%: Html.ActionLink("Some View", "Index", "controller", null, new {id="something}")%>
Ответ 3
В основном это дает ошибку, потому что нет перегрузки метода, у которой есть подпись, которую вы хотите.
Ближайшая подпись к той, которая вам нужна,
public static string ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
Object routeValues,
Object htmlAttributes
)
Вы передаете атрибут id в значение routevalue, поэтому он дает вам смешной href. введите null в значение routevalue, затем добавьте html атрибуты
Ответ 4
попробуйте это
@Html.ActionLink("Forgot your access?", "RecoverPassword",
"Account", new { area = "registration-full.html" },
new { @class = "col-xs-6", id = "login-forget-link" })