333 votes

Html.ActionLink comme un bouton ou une image, pas un lien

Dans la dernière version (RC1) d'ASP.NET MVC, comment obtenir Html.ActionLink pour afficher un bouton ou une image au lieu d'un lien?

354voto

jslatts Points 2937

J'aime utiliser Url.Action () et Url.Content () comme ceci:

 <a href='<%: Url.Action("MyAction", "MyController") %>'>
    <img src='<%: Url.Content("~/Content/Images/MyLinkImage.png") %>' />
</a>
 

Strictement parlant, l'Url.Content est seulement nécessaire pour le cheminement ne fait pas vraiment partie de la réponse à votre question.

332voto

Mark Points 2832

Réponse tardive, mais vous pouvez simplement rester simple et appliquer une classe CSS à l'objet htmlAttributes.

 <%= Html.ActionLink("Button Name", "Index", null, new { @class="classname" }) %>
 

puis créez une classe dans votre feuille de style

 a.classname
{
    background: url(../Images/image.gif) no-repeat top left;
     display: block;
     width: 150px;
     height: 150px;
     text-indent: -9999px; /* hides the link text */
}
 

95voto

DevDave Points 2095

Empruntant à la réponse de Patrick, j'ai trouvé que je devais faire ceci:

 <button onclick="location.href='@Url.Action("Index", "Users")';return false;">Cancel</button>
 

pour éviter d'appeler la méthode de publication du formulaire.

51voto

agAus Points 475

Appelez-moi simpliste, mais je fais juste:

 <a href="<%: Url.Action("ActionName", "ControllerName") %>">
    <button>Button Text</button>
</a>
 

Et vous vous occupez du lien hypertexte. Nos utilisateurs l'adorent :)

12voto

Mehrdad Afshari Points 204872

Vous ne pouvez pas le faire avec Html.ActionLink . Vous devriez utiliser Url.RouteUrl et utiliser l'URL pour construire l'élément que vous voulez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X