web-dev-qa-db-fra.com

Html.ActionLink avec un identifiant HTML spécifié?

Je voudrais donner le similaire généré avec un Html.ActionLink un identifiant HTML pour que je puisse changer le CSS selon où je suis. J'ai un MasterPage avec un ensemble de liens et je voudrais distinguer le "Tab" actif avec Jquery changeant le css de cet #id actif

En ce moment j'utilise:

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

Il génère:

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

Je souhaite 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 cela génère:

<a href="/controller/Length?5">Some View</a>
37
Peter

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 un } expected Erreur. Voici ce que vous recherchez:

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

Ce qui produit le HTML suivant:

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

Edit: Je viens de réaliser quel est le problème parce que j'ai mal lu ce que vous avez essayé. Vous utilisez une surcharge incorrecte pour passer l'élément id html. Vous passez probablement le new { id="blah" } param dans le paramètre routeValues, ce qui entraînera son utilisation lors de la construction du lien de route, 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 vous devez utiliser 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 garantit que new { id="blah" } est passé dans le paramètre htmlAttributes.

52
Kelsey

Essaye ça:

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

Fondamentalement, cela donne une erreur car il n'y a pas de surcharge de méthode qui a la signature que vous souhaitez.

La signature la plus proche de celle dont 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 valeur de routage, c'est pourquoi il vous donne la href drôle. passez null dans la valeur de routage, puis ajoutez vos htmlattributes

2
MrBliz

essaye ça

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