2010-09-14 10 views
7

es ist einfach html:wie Html.ActionLink ohne Text zu machen, aber mit Bild nach innen

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

ich von ihnen Html.ActionLink machen möchte:

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

möchte ich haben Mein Link ohne Text. es funktioniert nicht, Null in einem ersten Parameter ist nicht erlaubt. Bild ist zu kurz wie normal. Wie kann ich html.actionlink ohne Text aber mit Bild verwenden?

+0

mögliche Duplikate von [Bild entspricht ActionLink in ASP.NET MVC] (http://stackoverflow.com/questions/210711/image-equivalent-of-actionlink-in-asp-net-mvc) – flq

Antwort

10

Hier ist eine Lösung.

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

Im Wesentlichen ist Action für Textlinks, und es gibt kein Äquivalent für Bilder, aber Sie können Url.RouteUrl verwenden, um die Adresse für den Link zu erhalten und setzen einen beliebigen HTML-Code, den Sie innerhalb des Ankers wie (W3C erlaubt natürlich).

3

auf einer früheren Frage SO basiert (das war geschlossen), hier eine Lösung:

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(); 
} 

das Orignal hier gefunden werden kann: Is there an ASP.NET MVC HtmlHelper for image links?

6

Auf diese Weise am einfachsten ist (mit Razor):

+0

Es gibt keine htmlAt Tributargument in der Methode @ Url.Action. Es sollte @ Url.Action sein (string actionName, string controllername, RouteValueDictionary routeValues) – Finickyflame

Verwandte Themen