2010-09-01 10 views
34

Je voudrais donner l'équivalent généré avec un Html.ActionLink un identifiant HTML afin que je puisse changer le CSS en fonction de l'endroit où je suis. J'ai un MasterPage avec un ensemble de liens et je voudrais distinguer l'actif « Tab » avec Jquery changer le css de cette #id actifHtml.ActionLink avec un identifiant HTML spécifié?

En ce moment je suis en utilisant:

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

Il génère:

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

J'aimerais générer:

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

Est-ce possible? J'ai essayé:

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

Mais qui produit:

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

Je ne suis pas familier avec la syntaxe correcte, mais si cela '' {vraiment ne pas être fermé? –

+0

Il devrait, mais j'aurais pensé que le serveur Web aurait généré une erreur, quand ils ont essayé d'exécuter cette page Web. Je pense que c'est une faute de frappe. L'affiche originale peut-elle confirmer s'il vous plaît? – MrBliz

Répondre

47

Vous étiez sur la bonne voie. Je ne sais pas pourquoi cela n'a pas fonctionné pour vous car votre code a une faute de frappe qui aurait produit une erreur } expected. Voici ce que vous cherchez:

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

qui produit Teh HTML suivant:

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

Edit: Je viens de réaliser ce que la question est parce que je mal lu ce que vous avez essayé. Vous utilisez la mauvaise surcharge pour passer dans l'élément html id. Vous avez probablement passé le new { id="blah" } param dans le paramètre routeValues, ce qui entraînera son utilisation lors de la construction du lien d'itinéraire, plutôt que le paramètre htmlAttributes qui est ce que vous voulez.

Je pense que vous utilisez:

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

Lorsque ce que vous devez utiliser est la surcharge suivante comme je l'ai fait ci-dessus dans ma réponse:

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

Ce qui fait que new { id="blah" } est transmis dans le htmlAttributes param.

4

Essayez ceci:

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

Fondamentalement, il est donner une erreur parce qu'il n'y a pas de surcharge de la méthode qui a la signature que vous voulez .

La signature le plus proche de celui que vous avez besoin est

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

)

Vous passez l'attribut id dans la routevalue qui est pourquoi il vous donne la drôle href. passez null dans la routevalue, puis ajoutez vos attributs html

1

essayer cette

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