2010-08-02 15 views
16

Mam stronę ASP.NET MVC, w której próbuję wyświetlić przyjazne adresy URL.ASP MVC Przyjazne adresy URL i względna ścieżka Obrazy

Mam widok kategorii w kontrolerze głównym, który akceptuje wartość categoryKey, aby uzyskać zawartość strony.

Na przykład: http://localhost/Home/Category/Bikes pobiera zawartość roweru.

w moich Global.asax.cs, mam następujący obsłużyć to:

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

Działa to dobrze, i robi się treść, jednak jestem coraz zawartość z Content Management System , dla łatwej edycji. Po dodaniu obrazu na zarządzania treścią, dodaje obraz ze ścieżki względnej:

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

Teraz, jeśli ja goto „http://localhost/Home/Category”, a tag obrazu znajduje się na stronie bazowej, będzie ciągnąć w górę obraz. Jednak jeśli mam "http://localhost/Home/Category/" lub dodać rzeczywistą kategorię "/ Dom/Kategoria/Rowery" /, obraz się nie pokazuje. Właściwości obrazu wskazują "http://localhost/Home/AdminUploadContent/bikes.gif".

Czy jest coś, co mogę umieścić w pliku Global.aspx.cs, aby obsłużyć względną ścieżkę? Nawet jeśli ręcznie edytuję zarządzanie treścią w celu dodania ../../AdminUploadContent/bikes.gif, to odciąłem pierwsze ../, ponieważ robi ono jakąś walidację.

Odpowiedz

2

Możesz użyć ścieżki względnej "~ /", aby odnieść się do bieżącego katalogu wirtualnego, w którym znajduje się strona. Spróbuj dodać atrybut runat = „server” do tagu „img” i „~” Zaloguj się „src” atrybutu:

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

Nie polecam mieszania idiomu web asp.net z asp.net mvc. Trzymaj się tego

Bikes
Roman

35

Użyj metody Url.Content podczas generowania ścieżki do obrazu.

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

czy przy użyciu WebForms zobaczyć silnik:

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

runat = "serwer" nie jest potrzebny w tym przypadku, myślę, że masz rację: –

+0

. naprawione. – marcind

+0

@marcind, hi, zapisuję ścieżkę Imagepath w bazie danych jako: 'c: // user/tom/images', nie mogę jej odzyskać, dlaczego? – stom

0

można wdrożyć moduł custom http że przepisze drogę od względnej ../../img.png potrzebne do obsługi odsyłający na przykład nagłówek http.

0

To też działa.

<img src="@Url.Content("~/Images/yourimage.png")"/> 
Powiązane problemy