Подтвердить что ты не робот

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>
4b9b3361

Ответ 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" })