Html.RouteLink() HtmlHelper funciona muy bien para enlaces de texto. Pero, ¿cuál es la mejor manera de vincular una imagen?¿Hay un ASP.NET MVC HtmlHelper para enlaces de imagen?
Respuesta
aquí la mía, es la función básica hacer algunas sobrecargas
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();
}
<a href="<%=Url.RouteUrl(...)%>"><img src="..." alt="..." /></a>
+1 ya que es el método más rápido que solía cabo de tantos respondió aquí. Acabo de especificar la acción y el controlador en este método y funcionó bien. – nccsbim071
Crea tu propia extensión de ayuda.
public static string Image(this HtmlHelper helper, string src, string alt)
{
TagBuilder tb = new TagBuilder("img");
tb.Attributes.Add("src", helper.Encode(src));
tb.Attributes.Add("alt", helper.Encode(alt));
return tb.ToString(TagRenderMode.SelfClosing);
}
Sin embargo, esto no crea un enlace de acción de imagen. ¿No es eso lo que pide Zack? –
, incluso si esto no responde directamente a la pregunta, realmente me gusta este método para crear una extensión de ayuda de etiqueta de imagen. Gracias :) –
<%= Html.ActionLink(Html.Image(imageUrl, imageAlt), actionName, controllerName) %>
podría funcionar, la extensión de imagen es de los futuros de montaje. O haga su propia extensión.
No tag-soup. Bonito. –
Parece que no funciona. El método Html.ActionLink() parece codificar html el primer arg para que todos los corchetes angulares, etc. se escapen. – macon
<%= Html.RouteLink("PLACEHOLDER", ...).Replace("PLACEHOLDER", "<img src=""..."" alt=""..."" />")%>
Esto requiere un montón de feo manipulación de cadenas. –
que no tienen suficiente SO arrogancia para agregar un comentario, pero esto es un comentario sobre MiniScalope's comment above:
UrlHelper urlHelper = ((Controller)htmlHelper.ViewContext.Controller).Url;
lo haría Do ggest haciendo este método una extensión HtmlHelper en sí mismo (y simplificarlo), para su reutilización:
private static UrlHelper Url(this HtmlHelper helper)
{
return new UrlHelper(helper.ViewContext.RequestContext);
}
Esta es una versión actualizada que tengo de MiniScalope respuesta anterior. Estoy usando VS2010 y ASP.Net MVC 2 Vista Previa
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;
TagBuilder imgTag = new TagBuilder("img");
imgTag.MergeAttribute("src", imgSrc);
imgTag.MergeAttributes((IDictionary<string, string>) imgHtmlAttributes,true);
string url = urlHelper.Action(actionName, controllerName, routeValues);
TagBuilder imglink = new TagBuilder("a");
imglink.MergeAttribute("href", url);
imglink.InnerHtml = imgTag.ToString();
imglink.MergeAttributes((IDictionary<string, string>)htmlAttributes, true);
return imglink.ToString();
}
este código ha sido probado en mvc4 ...
public static MvcHtmlString 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;
var imgTag = new TagBuilder("img");
imgTag.MergeAttribute("src", imgSrc);
imgTag.MergeAttributes((IDictionary<string, string>)imgHtmlAttributes, true);
string url = urlHelper.Action(actionName, controllerName, routeValues);
var imglink = new TagBuilder("a");
imglink.MergeAttribute("href", url);
imglink.InnerHtml = imgTag.ToString();
imglink.MergeAttributes((IDictionary<string, string>)htmlAttributes, true);
return MvcHtmlString.Create(imglink.ToString());
}
- 1. Google Chart HtmlHelper para Asp.net Mvc
- 2. ¿Utiliza alguna extensión personalizada ASP.NET MVC HtmlHelper?
- 3. Ayuda con ASP.NET MVC HtmlHelper API Diseño
- 4. ¿Hay un corrector ortográfico para ASP.NET MVC?
- 5. enrutamiento enlaces legacy asp.net en un proyecto asp.net mvc
- 6. Uso de MVC HtmlHelper desde un WebForm
- 7. NullReferenceException problema con ASP.NET MVC cuadro de texto HtmlHelper
- 8. ¿Hay algún beneficio al usar HtmlHelper en MVC?
- 9. ASP.Net MVC 2.0 Html.HiddenFor HtmlHelper extension no devuelve el valor
- 10. ¿Hay un motor de plantillas de jade para ASP.NET MVC?
- 11. ¿Hay algún diseñador gráfico para ASP.NET MVC?
- 12. Método de extensión MVC 3 htmlhelper para envolver contenido
- 13. ASP.NET MVC: Razor @helper vs métodos de extensión para HtmlHelper - ¿cuál es el preferido?
- 14. ¿Hay un buen CMS para usar con ASP.Net MVC
- 15. ASP.NET MVC URL de imagen generadas dinámicamente
- 16. ¿Cómo se puede utilizar HtmlHelper para crear un hipervínculo externo?
- 17. ¿Cómo prevenir enlaces de imagen desde su sitio ASP.NET?
- 18. ASP.NET MVC Html.RadioButton Excepción
- 19. ¿Cómo se obtiene un ID personalizado para hacer uso de HtmlHelper en MVC
- 20. Mostrar/Ocultar enlaces en una vista ASP.Net MVC
- 21. Codificación HTML para HtmlHelper Método de extensión
- 22. Hacer un Html.ActionLink alrededor de una imagen en ASP.NET MVC?
- 23. ¿Hay un puerto del Módulo ASP.NET de Disposición de autenticación mixta (MADAM) para ASP.NET MVC?
- 24. ¿Hay alguna aplicación de referencia ASP.Net MVC?
- 25. ¿Hay enlaces de JavaScript para MySQL?
- 26. ¿Cómo renderizar enlaces HTML simples en Asp.Net MVC loop?
- 27. Asp.net MVC Etiqueta Para
- 28. Probando HtmlHelpers en ASP.NET MVC
- 29. ASP.NET MVC: ¿hay alguna manera de simular un ViewState?
- 30. ¿hay algo similar a asp.net mvc para winforms o wpf?
¿No debería ser esto HtmlString en lugar de cadena? con return new HtmlString (imglink.ToString()); ? – Stacker
Solo para señalar que htmlHelper.Image() ya no está en MVC4. –
no puede declarar htmlHelper.Image() – kasim