Comment appliquer une classe CSS à Html.ActionLink dans ASP.NET MVC?

104

Je construis une application ASP.NET MVC , en utilisant VB.NET et j'essaie d'appliquer une classe css à un en Html.ActionLinkutilisant le code:

<%=Html.ActionLink("Home", "Index", "Home", new {@class = "tab" })%>

Mais lorsque j'exécute le code, je reçois l'erreur ci-dessous:

Message d'erreur du compilateur: BC30988: tapez ou «avec» attendu.

Je suis nouveau sur MVC et je n'ai vraiment pas la moindre idée de ce que je fais, donc je ne peux pas voir ce qui ne va pas car j'utilise du code basé sur un exemple ailleurs.

LiamGu
la source
Une telle signature n'existe pas pour la méthode Html.ActionLink avec (chaîne, chaîne, chaîne, objet).
twk
Est-il possible de faire cela sans utiliser de classe anonyme?
3Dave

Réponses:

48

C'est:

<%=Html.ActionLink("Home", "Index", MyRouteValObj, new with {.class = "tab" })%>

Dans VB.net, vous définissez un type anonyme en utilisant

new with {.class = "tab" }

et, comme d'autres le soulignent, votre troisième paramètre doit être un objet (peut également être un type anonyme).

Eduardo Molteni
la source
153

@ewomack a une excellente réponse pour C #, sauf si vous n'avez pas besoin de valeurs d'objet supplémentaires. Dans mon cas, j'ai fini par utiliser quelque chose de similaire à:

@Html.ActionLink("Delete", "DeleteList", "List", new object { },
new { @class = "delete"})
Adamgede
la source
18
Si vous n'avez pas besoin des valeurs d'itinéraire, vous pouvez également passer nullcomme 4ème argument:@Html.ActionLink("Delete", "DeleteList", "List", null, new { @class = "delete"})
xec
56

En C #, cela fonctionne également avec un null comme 4ème paramètre.

@Html.ActionLink( "Front Page", "Index", "Home", null, new { @class = "MenuButtons" })
coding_is_fun
la source
Ceci est utile car lorsque vous ajoutez null, vous obtenez une demande d'URL standard et propre
Sumanstm21
33

Cette syntaxe a fonctionné pour moi dans MVC 3 avec Razor:

@Html.ActionLink("Delete", "DeleteList", "List", new { ID = item.ID, ListID = item.id }, new {@class= "delete"})
ewomack
la source
17

Cela fonctionne pour MVC 5

@Html.ActionLink("LinkText", "ActionName", new { id = item.id }, new { @class = "btn btn-success" })
César León
la source
Pour une utilisation dans un MVC 5 ActionLink avec des paramètres: @ Html.ActionLink ("Texte du lien", "Action", "Nom du contrôleur", nouveau {myParam = "XXX"}, nouveau {@style = "couleur: noir" })
mggSoft
3

Dans VB.NET

<%=Html.ActionLink("Contact Us", "ContactUs", "Home", Nothing, New With {.class = "link"})%>

Cela attribuera un "lien" de classe css au Contactez-nous.

Cela générera le HTML suivant:

<a class="link" href="www.domain.com/Home/ContactUs">Contact Us</a>
H Sampat
la source
0

supprimé le c # ... voici le vb.net

<%=Html.ActionLink("Home", "Index", "Home", New With {.class = "tab"}, Nothing)%>
Rajesh pillai
la source
Mauvaise syntaxe pour Vb.net et il n'y a pas de constructeur avec cette signature
Eduardo Molteni
désolé ... par défaut ... j'ai pris c # .. aurait dû être plus attentif à la lecture de la question ..
rajesh pillai