Html.ActionLink avec un id HTML spécifié?
-
26-09-2019 - |
Question
Je voudrais donner comme produit avec un Html.ActionLink
un identifiant HTML, donc je peux changer le CSS en fonction de l'endroit où je suis. J'ai un MasterPage
avec un ensemble de liens et je voudrais distinguer le « Tab » active avec Jquery changer le css de ce #id actif
En ce moment je suis en utilisant:
<%: Html.ActionLink("Some View", "Index", "controller")%>
Il génère:
<a href="/controller">Some View</a>
Je voudrais 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 génère:
<a href="/controller/Length?5">Some View</a>
La solution
Vous étiez sur la bonne voie. Je ne sais pas pourquoi ça n'a pas marché pour vous en tant que votre code a une faute de frappe qui aurait produit une erreur de } expected
. Ce qui suit est ce que vous cherchez:
<%= Html.ActionLink("Test Link", "SomeAction", "SomeController",
null, new {id = "someID" }) %>
Ce qui produit Teh HTML suivant:
<a href="/SomeController/SomeAction" id="someID">Test Link</a>
Modifier Je viens de réaliser ce que la question est parce que je lis mal ce que vous avez essayé. Vous utilisez la mauvaise surcharge pour passer dans l'élément html id
. Votre passait probablement le new { id="blah" }
dans le paramètre param de routeValues
, qui le fera à utiliser lors de la construction du lien de la route, plutôt que le paramater de htmlAttributes
qui est ce que vous voulez.
Je pense que vous utilisez:
ActionLink(string linkText, string actionName, Object routeValues,
Object htmlAttributes)
Quand 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 passé dans la htmlAttributes
param.
Autres conseils
Essayez ceci:
<%: Html.ActionLink("Some View", "Index", "controller", null, new {id="something}")%>
Fondamentalement, il est donne 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 te donne la drôle href. passe null dans le routevalue, puis ajoutez votre htmlAttributes
essayer cette
@Html.ActionLink("Forgot your access?", "RecoverPassword",
"Account", new { area = "registration-full.html" },
new { @class = "col-xs-6", id = "login-forget-link" })