2009-06-12 14 views

Respuesta

135

Razor (Ver Motor):

<a href="@Url.Action("ActionName", "ControllerName")"> 
    <img src="@Url.Content("~/Content/img/imgname.jpg")" /> 
</a> 

ASPX (Ver Motor):

<a href="<%= Url.Action("ActionName", "ControllerName") %>"> 
    <img src="<%= Url.Content("~/Content/img/imgname.jpg") %>" /> 
</a> 

Obviamente, si usted hace esto más de una vez, escribir un ayudante para él. Y complete los otros atributos de img/a. Pero esto debería darte la idea general.

22

Pruebe algo como esto:

public static string ActionLinkWithImage(this HtmlHelper html, string imgSrc, string actionName) 
{ 
    var urlHelper = new UrlHelper(html.ViewContext.RequestContext); 

    string imgUrl = urlHelper.Content(imgSrc); 
    TagBuilder imgTagBuilder = new TagBuilder("img"); 
    imgTagBuilder.MergeAttribute("src", imgUrl); 
    string img = imgTagBuilder.ToString(TagRenderMode.SelfClosing); 

    string url = UrlHelper.Action(actionName); 

    TagBuilder tagBuilder = new TagBuilder("a") { 
     InnerHtml = img 
    }; 
    tagBuilder.MergeAttribute("href", url); 

    return tagBuilder.ToString(TagRenderMode.Normal); 
} 

Esperanza esto ayuda

+6

Sugiero cambiar '' TagRenderMode.Normal' a TagRenderMode.SelfClosing' para el img; de lo contrario, representa '' en lugar de '' –

+0

Buena sugerencia, gracias Michael –

+1

La acción no es un método estático de la clase UrlHelper, por lo que debe invocarse desde un objeto urlHelper. –

0

Puede crear HtmlHelper qué imagen se puede volver con enlace ... Como parámetros se pasa a HtmlHelper valores como la ruta de la imagen y el enlace y en HtmlHelper que va a utilizar StringBuilder a formato hTML de esa imagen vinculada adecuadamente ...

aplausos

2

más fácil ...

cambiar su código por:

<p class="site-title">@Html.ActionLink(" ", "Index", "Home", 
    new 
    { 
     style = "background: url('" + Url.Content("~/images/logo.png") + "') no-repeat center right; display:block; height:50px;width:50px;" 
    })</p> 
+0

Nuestro puede hacer esto directamente desde CSS en lugar de usar estilos en línea. – devlord

6

La primera respuesta dada por @Craig Stuntz es absolutamente perfecto, pero mi preocupación es acerca de si lo que vas a hacer si usted tiene Ajax.ActionLink en lugar de Html.ActionLink . Aquí explicaré soluciones fáciles para ambos métodos. Puede hacer lo siguiente para Html.ActonLink:

@Html.Raw(@Html.ActionLink("[replacetext]", "Index", "Home").ToHtmlString().Replace("[replacetext]", "<img src=\"/Contents/img/logo.png\" ... />")) 

mismo concepto puede ser aplicado para Ajax.ActionLink

@Html.Raw(@Ajax.ActionLink("[replacetext]", "Index", "Home", new AjaxOptions { UpdateTargetId="dvTest"}).ToHtmlString().Replace("[replacetext]", "<img src=\"/Contents/img/logo.png\" … />")) 

por lo que este va a ser fácil para usted.

Editar:

ActionLink Imagen con hoja de estilos o nombre de clase

Con hojas de estilo

@Html.Raw(@Ajax.ActionLink("[replacetext]", "Index", "Home", new AjaxOptions { UpdateTargetId="dvTest"}).ToHtmlString().Replace("[replacetext]", "<img src=\"/assets/img/logo.png\" style=\"width:10%\" ... />")) 

Con Nombre de clase

<style> 
.imgClass { 
width:20% 
} 

@Html.Raw(@Ajax.ActionLink("[replacetext]", "Index", "Home", new AjaxOptions { UpdateTargetId="dvTest"}).ToHtmlString().Replace("[replacetext]", "<img src=\"/assets/img/logo.png\" class=\"imgClass\" ... />")) 

Para mayor referencia respecto ActionLink alrededor imagen Visita ActionLink around Image in Asp.net MVC

+0

@LenielMacaferi Gracias. Es un placer que hayas encontrado las soluciones correctas. – Dilip0165

+0

esto funciona gracias. ¿Hay alguna manera de agregar estilo css a la imagen? – sumedha

+0

@sumedha He actualizado mi respuesta sobre el estilo CSS a la imagen. Espero que te sea útil. – Dilip0165

1

Puede utilizar url.content:

@Url.Content("~/images/img/slide.png") 

este retorno ruta relativa

Cuestiones relacionadas