2010-08-02 10 views
16

Tengo una página ASP.NET MVC, donde intento mostrar URL amigables.ASP MVC URL amigable e imágenes de ruta relativa

Por lo tanto, tengo una vista de categoría en el controlador de inicio, que acepta un valor de categoría clave para obtener el contenido de la página.

Por ejemplo: http://localhost/Home/Category/Bikes obtiene el contenido de la bicicleta.

en mis Global.asax.cs, tengo el siguiente para manejar esto:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Category", 
     "{controller}/{action}/{categoryKey}", 
     new { controller = "Home", action = "Category", categoryKey = "" }); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 
} 

Esto funciona muy bien, y se pone el contenido, sin embargo, yo estoy recibiendo el contenido de un sistema de gestión de contenidos , para una fácil edición. Cuando se agrega una imagen en la gestión de contenidos, que añade la imagen con una ruta relativa:

<img src="../AdminUploadContent/bikes.gif" alt="Bikes" /> 

Ahora, si yo Goto "http://localhost/Home/Category", y que la etiqueta de imagen es en la página base, que se tire hacia arriba el imagen. Sin embargo, si goto "http://localhost/Home/Category/", o agrego la categoría real de "/ Inicio/Categoría/Bicicletas" /, la imagen no aparece. Las propiedades de la imagen apuntan a "http://localhost/Home/AdminUploadContent/bikes.gif".

¿Hay algo que pueda poner en mi archivo Global.aspx.cs para manejar la ruta relativa? Incluso si edito manualmente la gestión de contenido para agregar ../../AdminUploadContent/bikes.gif, está cortando el primero ../, ya que está haciendo una validación.

Respuesta

2

Puede usar la ruta relativa "~ /" para referirse al directorio virtual actual donde se encuentra la página. Trate de añadir atributo runat = "servidor" a su etiqueta "img" y el signo "~" en el atributo "src":

<img runat="server" src="~/AdminUploadContent/bikes.gif" alt="Bikes" /> 
+4

No recomendaría mezclar el lenguaje de asp.net Webforms con asp.net mvc. Se adhieren a este

Bikes
Roman

35

utilizar el método de Url.Content cuando se genera una trayectoria a su imagen.

<img src="@Url.Content("~/AdminUploadContent/bikes.gif")" /> 

o si el uso de los formularios Web ver motor:

<img src="<%= Url.Content("~/AdminUploadContent/bikes.gif") %>" /> 
+0

runat = "server" no es necesario en este caso, creo que –

+0

tiene razón. arreglado. – marcind

+0

@marcind, hola, estoy guardando Imagepath en la base de datos como: 'c: // usuario/tom/images', no puedo recuperarlo a la vista, ¿por qué? – stom

0

Se puede implementar un módulo HTTP personalizado que se reescribir ruta desde el ../../img.png en relación con el manejo sea necesario El árbitro encabezado http, por ejemplo.

0

Esto también funciona.

<img src="@Url.Content("~/Images/yourimage.png")"/> 
Cuestiones relacionadas