2014-01-25 69 views
0

我在ASP.NET MVC項目中使用a jQuery plugin時出現問題,圖像在不存在的位置搜索。在RouteConfig文件(ASP.NET MVC)中重定向圖像請求?

我收到了丟失的圖像錯誤,像這樣的:

GET http://localhost:51710/Home/img/chesspieces/wikipedia/bN.png 404 (Not Found) 

但我不知道爲什麼它似乎是搜索的localhost/Home一樣,裏面的圖片?

我想要在內容文件夾內搜索當然的圖像(例如\Content\chessboard.js\img),而不是像localhost/Home這樣的視圖/視圖控制器。

這是爲什麼,我該如何實現我想要的?

routeconfig文件仍然是在它的默認狀態:

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

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
    } 

編輯:

下面是chessboard.js,在那裏我可以localhost/Home後改變路線線,但不localhost/Home本身:

cfg.pieceTheme = 'img/chesspieces/wikipedia/{piece}.png'; 
+0

可以粘貼在視圖代碼中,你得到的圖像的例子嗎? –

+0

@bejger它不是在視圖中完成的,而是在chessboard.js中完成的(這是一個非常長的文件)。我能夠更改該文件中的localhost/Home之後的內容,因此問題肯定在上面的routeconfig中? – user2381114

+0

不一定。你能從你的chessboard.js文件粘貼一個你得到圖像的地方嗎? –

回答

3

使用絕對值路徑:

cfg.pieceTheme = '/img/chesspieces/wikipedia/{piece}.png'; // note the '/' 
+0

雖然它可能一般來說工作並不是一個好主意 - 如果在其他地方部署應用程序,而不是在網站根目錄,將會中斷。 –

+0

是的,但通常網站部署在根文件夾。我在過去5 - 10年沒有看到過網站部署在子文件夾中,因爲它會破壞安全性 –

+0

+1。忽略我以前的評論(它應該是關於構建字符串的方式,而不是在這種情況下url必須是絕對的事實),屬性的確必須設置爲絕對url(硬編碼或按照bejger建議的方式構建),因爲相對url將與當前頁面的url結合,並導致圖像出現意外的url。 –

3

有一個非常有用的URL擴展指向內容文件的適當位置(如圖片):

@Url.Content 

這使得它可以從適當的內容目錄中獲取文件。

@Url.Content("~/Content/chessboard.js/img") 

在情況下,有沒有可能使用這個文件,你可以嘗試這裏面的剃刀語法:

cfg.pieceTheme = "~/Content/chessboard.js/img/chesspieces/wikipedia/{piece}.png';