2010-08-02 61 views
16

我有一個ASP.NET MVC頁面,我試圖顯示友好的URL。ASP MVC友好的URL和相對路徑圖像

所以,我在Home Controller中有一個Category View,它接受一個categoryKey值來獲取頁面的內容。

例如:http://localhost/Home/Category/Bikes獲取自行車內容。

在我的Global.asax.cs中,我有以下來處理這個問題:

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

這一切正常,並且它得到的內容,但是,我正在從內容管理系統中的內容,便於編輯。當您在內容管理添加圖像,它使用相對路徑添加圖像:

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

現在,如果我轉到「http://localhost/Home/Category」,並將該圖像的標籤是基本頁面上,它會拉起圖片。但是,如果我轉到「http://localhost/Home/Category/」,或者添加「/ Home/Category/Bikes」/的實際類別,則圖像不會顯示。圖像的屬性指向「http://localhost/Home/AdminUploadContent/bikes.gif」。

有什麼我可以把我的Global.aspx.cs文件來處理的相對路徑?即使我手動編輯內容管理添加../../AdminUploadContent/bikes.gif,它正在切斷第一個../,因爲它正在做一些驗證。

回答

2

可以使用相對路徑「〜/」是指在頁面位於當前虛擬目錄。嘗試RUNAT =「server」屬性添加到您的「IMG」標籤和「〜」符號在「src」屬性:

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

我不會推薦將asp.net Webforms成語與asp.net mvc混合使用。堅持這

Bikes
Roman 2011-08-11 09:58:00

35

生成你的圖像的路徑時,請使用Url.Content方法。

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

,或者如果使用的WebForms視圖引擎:

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

runat =「服務器」是不需要在這種情況下,我認爲 – 2010-08-02 21:47:23

+0

你是對的。修復。 – marcind 2010-08-02 21:54:13

+0

@marcind,嗨,我將數據庫中的Imagepath保存爲:'c:// user/tom/images',我無法在視圖中檢索它,爲什麼? – stom 2015-08-10 17:19:30

0

您可以實現自定義HTTP模塊,將改寫從相對../../img.png所需處理Referer的路徑http頭,例如。

0

這也適用。

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