2010-09-01 6 views
34

Я хотел бы дать сгенерированный Html.ActionLink код HTML, поэтому я могу изменить CSS в зависимости от того, где я. У меня есть MasterPage с набором ссылок и я хотел бы, чтобы отличить активный «Tab» с Jquery изменения CSS этого активного #IDHtml.ActionLink с указанным идентификатором HTML?

Сейчас я использую:

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

It генерирует:

<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

Я не знаком с правильным синтаксисом, но следует, что '' {действительно не закрыта? –

+0

Должно быть, но я бы подумал, что веб-сервер сгенерировал ошибку, когда они попытались запустить эту веб-страницу. Я думаю, что это опечатка. Может ли подтвердить подлинный плакат? – MrBliz

ответ

47

Вы были на правильном пути. Я не уверен, почему это не сработало для вас, так как ваш код имеет опечатку, которая вызвала бы ошибку } expected. Ниже то, что вы ищете:

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

который производит дэ следующий HTML:

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

Edit: Я просто понял, что этот вопрос, потому что я был СУИ-читать то, что вы пробовали. Вы используете неправильную перегрузку для передачи в элементе 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.

4

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

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

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

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

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

)

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

1

попробовать это

@Html.ActionLink("Forgot your access?", "RecoverPassword", 
"Account", new { area = "registration-full.html" }, 
new { @class = "col-xs-6", id = "login-forget-link" }) 
Смежные вопросы