No puedo encontrar el método Html.Image en la nueva versión de MVC RC. Por favor, alguien me dé ejemplos de cómo renderizar una imagen simple en los sitios ASP .NET MVC RC.¿Dónde está Html.Image en ASP .NET MVC RC?
Respuesta
necesidad de escribir su propia cuenta o utilizar el método Url.Content() para establecer el atributo de origen. O puedes usar el mío. :-)
public static class HtmlHelperExtensions
{
public static string Image(this HtmlHelper helper,
string url,
string altText,
object htmlAttributes)
{
TagBuilder builder = new TagBuilder("img");
builder.Attributes.Add("src", url);
builder.Attributes.Add("alt", altText);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
return builder.ToString(TagRenderMode.SelfClosing);
}
}
Uso:
<%= Html.Image(Url.Content("~/Content/images/img.png"),
"alt text",
new { id = "myImage", border = "0" })
%>
EDITAR: Desde que escribí esto me he ido lejos de usarlo. Dejaré la respuesta aquí, aunque para la posteridad. Aunque creo que el método del ensamblado Future es una opción razonable, me encuentro simplemente usando la etiqueta de imagen con la url proporcionada por un UrlHelper. Cuando refactored mis ayudantes en una biblioteca independiente, este no hizo el corte. Volveré a evaluar si se convierte en la biblioteca MVC (no futura).
<img src="<%= Url.Content("~/content/...") %>"
alt="alt text"
class="has-border" />
¿Qué pasa con HTML puro?
<img src="" alt="" />
Se puede usar la colección o modelo ViewData a llenar el atributo src:
<img src="<%= ViewData["ImageSource"] %>" alt="" />
<img src="<%= ViewData.Model.ImageSource %>" alt="" />
Editar:
cuanto a uso de URLs relativas (es decir, utilizando el carácter "~") en la ruta , cambie el código anterior para usar ResolveUrl. Por ejemplo:
<img src="<%= ResolveUrl(ViewData.Model.ImageSource) %>" alt="" />
cuál es incorrecto? falta de verbosidad, incapacidad para encontrar fácilmente cada lugar donde usó una imagen con una búsqueda, más difícil cambiar la implementación si, por ejemplo, decide usar amazon S3 y desea reescribir las URL –
Puedo ver cómo sería más difícil buscar sus imágenes, pero no veo cómo esto es menos detallado que una etiqueta Html.Image que tendría esencialmente la misma información. Tampoco veo cómo es más difícil cambiar esta implementación (a menos que su queja sea la búsqueda nuevamente). –
+1 Porque aún recuerdo cómo escribir HTML. Búsqueda de código para "
EthanB
Si necesita hacer referencia a una imagen en, por ejemplo, la carpeta ~/Content/images/
, puede fácilmente ser hecho con sólo HTML plano:
<img src="/Content/image/mypic.png" alt="a picture available anywhere" />
El truco es el "/
" en el comienzo del atributo src
, que le indicará al navegador que comience a buscar carpetas en la raíz del sitio. Como ASP.NET MVC de forma predeterminada no analiza las URL de ruta en los archivos que existen en el servidor, el archivo se recuperará de la forma habitual. Esto también funciona en la vista Index
del controlador Home
independientemente de si usted tiene la url http://www.example.com/
, http://www.example.com/Home
o http://www.example.com/Home/Index
This won't work if you application is running in a virtual directory. –
Garry's correct. I would recommend going with my ResolveUrl method to handle all cases, but if this works for you then that's fine too. –
use MVC futures : http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24142 –
Su en MVC futuros, que están actualizando con cada lanzamiento.
futuros RC2 está aquí: http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24142
No se sienta culpable por el uso de algo en los futuros ''. No va a ninguna parte, e incluso si alguna vez tuviste acceso a la fuente.
Tienes que ser un poco cauteloso sobre algunas cosas en futuros (en caso de que desaparezcan) pero puedes estar bastante seguro de que Image helper no va a ninguna parte.
En general, las cosas solo" desaparecen "de la biblioteca MVC Futures cuando se mueven al espacio de nombres System.Web.MVC principal. –
Ahora podemos devolver MvcHtmlString.
public static MvcHtmlString Image(this HtmlHelper helper, string url, string altText, object htmlAttributes)
{
TagBuilder builder = new TagBuilder("img");
builder.Attributes.Add("src", url);
builder.Attributes.Add("alt", altText);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}
el uso de la maquinilla de afeitar:
@Html.Image(Url.Content("~/Content/images/img.png"),
"alt text",
new { id = "myImage", border = "0" })
Lo necesita con una navaja de afeitar; Otra implementación solo funciona en ASP.Net antiguo –
- 1. solicitud Validar con Request.Unvalidated() en ASP MVC 3 RC y .NET 4
- 2. Ignorar carpeta en ASP .NET MVC
- 3. ASP .NET Web Forms tradicionales vs MVC
- 4. ¿Puedo eliminar ASP .NET MVC 2 de Visual Studio si utilizo ASP .NET MVC 3?
- 5. asp .net mvc OnResultExecuting modify filterContext Resultado
- 6. JQuery After Body ASP .NET MVC 4
- 7. ASP .NET MVC correcta UserControl arquitectura
- 8. ASP> net MVC parciales reutilizables
- 9. Visual Studio ASP .Net MVC Intellisense
- 10. MVC 4 RC - Aspnet_regsql.exe
- 11. ASP .NET - ¿Qué está pasando detrás de un Eval()?
- 12. Qué aprender - Ruby on Rails o ASP .NET MVC ... dado que estoy familiarizado con ASP .NET
- 13. Cómo URL parámetros codificar en ASP .NET MVC
- 14. El uso de XSLT en ASP .NET MVC 3
- 15. Crear personalizada ayudante en ASP .NET MVC 3 y Razor
- 16. IE intenta descargar JSON en ASP. NET MVC 3
- 17. ¿Dónde está SqliteDataReader en sqlite-net?
- 18. ¿Dónde está IQueryable en .NET Compact Framework?
- 19. ¿Dónde puedo encontrar la documentación de ASP MVC?
- 20. Microsoft ASP .NET API web, MVC 4 y arquitectura SPA
- 21. Log4Net y .NET 4.0 RC
- 22. Multi inquilino en ASP MVC
- 23. AntiForgeryToken obsoleto en ASP.Net MVC 4 RC
- 24. ¿Dónde está la documentación ASP.NET MVC AJAX?
- 25. ASP.NET MVC Beta 1 - ¿Dónde está Html.RenderPartial?
- 26. ASP .NET MVC Almacenamiento de muchos parámetros entre vistas
- 27. ASP .Net MVC 3: Acción y redirección infantil
- 28. ASP .Net MVC 3: Acciones del controlador de prueba unitaria
- 29. Asp .Net MVC Viewmodel debe ser de clase o struct?
- 30. ¿Existen convenciones de nomenclatura para ASP .NET MVC 3?
why aren't you using Futures? http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24142 –
1) I honestly didn't see it in futures when I wrote it and 2) I can depend on mine not being removed. If/when it makes it into the release, I'll change and use it. – tvanfosson
Perhaps I should get Resharper. Meanwhile, be sure to add using System.Web.Mvc; using System.Web.Routing; –