2010-09-14 23 views
7

es simple html:cómo hacer Html.ActionLink sin texto pero con imagen dentro

<%-- 
<a href="?language=de"> 
    <img src="/Images/Company/de.png" alt="Webseite auf Deutsch" style="border: 0;" /> 
</a> 
--%> 

me gustaría hacer de ellos Html.ActionLink:

<%= Html.ActionLink("", "ChangeCulture", "Account", new { lang = "de", returnUrl = this.Request.RawUrl }, new { @style = "background-image: url(/Images/Company/de.png)", @class = "languageLink" }) %> 

me gustaría tener mi enlace sin texto no funciona, nulo en un primer parámetro no está permitido. la imagen es tan corta como es normal. ¿Cómo puedo usar html.actionlink sin texto pero con imagen?

+0

posible duplicado de [Imagen equivalente de ActionLink en ASP.NET MVC] (http://stackoverflow.com/questions/210711/image-equivalent-of-actionlink-in-asp-net-mvc) – flq

Respuesta

10

Aquí hay una solución.

<a href="<%= Url.RouteUrl("MyRoute", new { id = Model.Id }) %>"> 
    <img src="myimage.png" alt="My Image" />. 
</a> 

Esencialmente, ActionLink es para los enlaces de texto y no hay un equivalente para las imágenes, pero se puede utilizar Url.RouteUrl para obtener la dirección para el enlace y poner cualquier código HTML que desee dentro del anclaje (W3C lo permite, por supuesto).

3

basado en una pregunta anterior SO (que estaba cerrado), he aquí una solución:

public static string ImageLink(this HtmlHelper htmlHelper, 
    string imgSrc, string alt, 
    string actionName, string controllerName, object routeValues, 
    object htmlAttributes, object imgHtmlAttributes) 
{ 
    UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url; 
    string imgtag = htmlHelper.Image(imgSrc, alt, imgHtmlAttributes); 
    string url = urlHelper.Action(actionName, controllerName, routeValues); 

    TagBuilder imglink = new TagBuilder("a"); 
    imglink.MergeAttribute("href", url); 
    imglink.InnerHtml = imgtag; 
    imglink.MergeAttributes(new RouteValueDictionary(htmlAttributes), true); 

    return imglink.ToString(); 
} 

la orignal se puede encontrar aquí: Is there an ASP.NET MVC HtmlHelper for image links?

6

De esta manera se más fácil (usando la maquinilla de afeitar):

<a href="@Url.Action("Action", "Controller", new { lang = "de", returnUrl = this.Request.RawUrl }, new { @style = "background-image: url(/Images/Company/de.png)", @class = "languageLink" })"><img src="myimage.png" alt="My Image" /></a> 
+0

No hay htmlAt argumento de tributo en el método @ Url.Action. Debe ser @ Url.Action (string actionName, string controllerName, RouteValueDictionary routeValues) – Finickyflame

Cuestiones relacionadas