Html.ActionLink qu'un bouton ou une image, pas un lien
Dans la dernière (RC1) communiqué de ASP.NET MVC, comment puis-je obtenir le code Html.ActionLink est rendu comme un bouton ou une image à la place d'un lien?
- Avec MVC 3.0, vous pouvez essayer de cette façon, <a href="@Url.Action (l ' "Indice","Home")"><img src="@Url.Contenu("~/Thèmes/Or/images/essayez-onit.png")" alt="Accueil" /></a> Plus d'infos, Essayez cette mycodingerrors.blogspot.com/2012/08/...
- Juste après avoir passé quelques heures à faire "correctement" (par exemple en développant les
AjaxHelper
avec unActionButton
) j'ai pensé que je voudrais partager ci-dessous. - C'est hilarant à moi que sept ans plus tard, cette question est encore en train de upvotes. Apparemment, en 2016, il n'y a pas encore de simple, intuitive façon de le faire.
Vous devez vous connecter pour publier un commentaire.
Réponse tardive mais vous pouvez juste garder les choses simples et appliquer une classe CSS à l'htmlAttributes objet.
et ensuite créer une classe dans votre feuille de style
text-indent: -9999px;
pourquoi ne pas le faire:<%= Html.ActionLink(" ", "Index", null, new { @class="classname" }) %>
à l'Aide d'un espace pour le nom.J'aime utiliser l'Url.Action() et l'Url.Contenu() comme ceci:
À proprement parler, l'Url.Le contenu est uniquement nécessaire pour les chemins d'accès ne fait pas vraiment partie de la réponse à votre question.
Grâce à @BrianLegg pour préciser que ce doit utiliser le nouveau Rasoir de vue de la syntaxe. Exemple a été mis à jour en conséquence.
Emprunt de Patrick réponse, j'ai trouvé que j'avais pour ce faire:
afin d'éviter d'appeler le formulaire en méthode post.
Appelez-moi simpliste, mais je viens de faire:
Et vous prendre soin de le mettre en évidence de lien hypertexte. Nos utilisateurs adore 🙂
text-decoration:none
pour se débarrasser de cette stupide souligner. Cela est nécessaire pour certains navigateurs (Firefox 11.0 pour être sûr).Simplement :
onclick
contenu aveclocation.href
(donconclick="location.href='@Url.Action(....)'"
) je ne pouvais pas le faire fonctionner.Une réponse tardive mais c'est la façon de faire mes ActionLink en bouton. Nous sommes à l'aide de Bootstrap dans notre projet car elle rend la pratique. Jamais l'esprit de l' @T depuis sa seul un traducteur nous utilisons.
Ci-dessus donne un lien comme celui-ci et il semble que l'image ci-dessous:
De mon point de vue:
Espère que cela aide quelqu'un
new { @class="btn btn-primary" })
+unEn utilisant bootstrap c'est le plus court et le plus propre approche pour créer un lien vers une action de contrôleur qui apparaît comme un bouton dynamique:
Ou à utiliser le Html helpers:
si vous ne souhaitez pas utiliser un lien, utilisez le bouton. vous pouvez ajouter l'image à bouton aussi bien:
type="button" effectue votre action au lieu de la soumission de formulaire.
Vous ne pouvez pas faire cela avec
Html.ActionLink
. Vous devez utiliserUrl.RouteUrl
et d'utiliser l'URL pour construire l'élément que vous souhaitez.<button onclick="location.href='@Url.Action("NewCustomer", "Customers")'">Checkout >></button>
Même plus tard la réponse, mais je viens de tomber sur un problème similaire, et a fini par écrire mon propre Lien de l'Image HtmlHelper extension.
Vous pouvez trouver une mise en œuvre de celui-ci sur mon blog dans le lien ci-dessus.
Ajouté juste au cas où quelqu'un est de la chasse à la mise en œuvre.
Une façon simple de faire de votre code Html.ActionLink dans un bouton (tant que vous avez BootStrap branché en qui vous avez probablement), c'est comme cela:
Pour afficher une icône avec le lien
Faire ce Mehrdad dit - ou utiliser le helper url à partir d'un
HtmlHelper
méthode d'extension comme Stephen Walther décrit ici et de faire votre propre méthode d'extension qui peut être utilisé pour rendre l'ensemble de vos liens.Alors il sera facile de rendre tous les liens que les boutons/les ancres ou selon ce que vous préférez - et, plus important encore, vous pouvez changer d'avis plus tard, quand vous découvrez que vous avez réellement préférez une autre façon de faire de vos liens.
vous pouvez créer votre propre méthode d'extension
jeter un regard à ma mise en œuvre
ensuite l'utiliser dans votre vue de jeter un regard à mon appel
Il semble y avoir beaucoup de solutions sur la façon de créer un lien qui s'affiche comme une image, mais aucun ne faire apparaître un bouton.
Il est seulement bon moyen que j'ai trouvé pour ce faire. C'est un peu hacky, mais il fonctionne.
Ce que vous avez à faire est de créer un bouton et un lien d'action. Faire le lien d'action invisible à l'aide de css. Lorsque vous cliquez sur le bouton, il peut mettre le feu à l'événement click le lien d'action.
Il peut être une douleur dans le cul pour ce faire, chaque fois que vous ajoutez un lien qui doit ressembler à un bouton, mais il ne obtenir le résultat désiré.
utilisation FORMACTION
Pour la Conception de Matériel Lite et MVC:
Viens de trouver cette extension pour faire simple et efficace.
La façon dont je l'ai fait c'est d'avoir le actionLink et l'image séparément.
Définir la actionlink image cachée
puis ajouté un jQuery déclencher l'appel. C'est plus une solution de contournement.
Exemple de déclencheur:
Url.Action()
vous obtiendrez le nu URL pour la plupart des surcharges deHtml.ActionLink
, mais je pense que laURL-from-lambda
fonctionnalité est disponible uniquement par le biaisHtml.ActionLink
jusqu'à présent. Espérons qu'ils vont ajouter une telle surcharge deUrl.Action
à un certain point.C'est la façon dont je l'ai fait sans script:
Même, mais avec le paramètre et la boîte de dialogue de confirmation: