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>
Était-ce utile?

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" })
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top