2010-09-01 13 views
34

Me gustaría dar un ID HTML generado con un Html.ActionLink, así que puedo cambiar el CSS dependiendo de dónde estoy. Tengo un MasterPage con un conjunto de enlaces y me gustaría distinguir el activo "Tab" con jQuery cambiar el css de ese #id activaHtml.ActionLink con un ID HTML especificado?

En este momento estoy usando:

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

Se genera:

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

me gustaría generar:

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

¿Es posible? He intentado:

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

Pero que genera:

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

No estoy familiarizado con la sintaxis correcta, pero si ello '' {realmente no pueden cerrar? –

+0

Debería, pero habría pensado que el servidor web habría generado un error, cuando intentaron ejecutar esa página web. Creo que es un error tipográfico ¿Puede el cartel original confirmar por favor? – MrBliz

Respuesta

47

Estaba en el camino correcto. No estoy seguro de por qué no funcionó, ya que su código tiene un error tipográfico que habría producido un error } expected. Lo siguiente es lo que busca:

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

que produce teh código HTML siguiente:

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

Editar: simplemente me di cuenta de cuál es el problema porque estaba mal leyendo lo que ha intentado. Está utilizando la sobrecarga incorrecta para pasar el elemento html id. Probablemente pase el parámetro new { id="blah" } en el parámetro routeValues, lo que hará que se use al construir el enlace de la ruta, en lugar del parámetro htmlAttributes que es lo que desea.

creo que esté utilizando:

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

Cuando lo que hay que utilizar es la siguiente sobrecarga como lo hice anteriormente en mi respuesta:

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

cual se asegura new { id="blah" } se está pasando en el htmlAttributes param.

4

Prueba esto:

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

Básicamente se está dando un error porque no hay sobrecarga de método que tiene la firma que desea .

La firma más cercana a la que lo que necesita es

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

)

Usted está de paso del atributo id en el routevalue razón por la cual le está dando la href divertido. pase nulo en el valor de ruta, luego agregue sus atributos htm

1

probar esto

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