2014-01-25 2 views
0

У меня возникла проблема с использованием a jQuery plugin в проекте ASP.NET MVC, где искажаются изображения в местах, которые не существуют.Повторно направлять запросы изображения в файле 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 } 
      ); 
     } 
    } 

Edit:

Вот строка в chessboard.js, где я могу изменить маршрут послеlocalhost/Home, но не localhost/Home:

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

Вы можете вставить пример кода вида были вы получите изображения? –

+0

@bejger Это не сделано в представлении, это делается в chessboard.js (это очень длинный файл). Я могу изменить то, что после localhost/Home в этом файле, так что проблема должна быть в routeeconfig выше наверняка? – 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") 

В случае, если нет возможности использовать синтаксис Razor внутри этого файла вы можете попробовать это:

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