Невозможно использовать относительные пути с областями в ASP.NET MVC 2 - PullRequest
1 голос
/ 03 августа 2010

В моем приложении у меня есть мобильный телефон. В этой области у меня есть папка «Активы», в которую мы помещаем все наши css, javascript и изображения.

Доступ к просмотрам работает просто отлично. http://localhost/webapp/mobile/stuff

Проблема в том, когда я получаю доступ к своим CSS, JavaScript и изображениям.

Я не могу сделать что-то подобное, на мой взгляд.

<img src="Assets/css/styles.css" />

Причина в том, что реальный URL: http://localhost/webapp/areas/mobile/assets/css/styles.css

Есть ли способ сопоставить http://localhost/webapp/areas/mobile со http://localhost/webapp/mobile для статических файлов?

Спасибо, Randall

Ответы [ 2 ]

3 голосов
/ 14 августа 2010

Я решил использовать простой IHTTPModule, который переписал бы мне URL. Вот метод, который я реализовал для события BeginRequest.

void BeginRequest(object sender, EventArgs e)
{
    var context = HttpContext.Current;
    var path = context.Request.Path;

    // Add Areas to the Mobile path, so we don't have to specify it manually.
    // This is mainly for handling static resources that you place in areas.
    if (!path.Contains("Mobile/")) return;
    if (path.EndsWith(".png") ||
        path.EndsWith(".gif") ||
        path.EndsWith(".css") ||
        path.EndsWith(".js") ||
        path.EndsWith(".htm") ||
        path.EndsWith(".cache"))
        context.RewritePath(path.Replace("Mobile/", "Areas/Mobile/"));
}
1 голос
/ 03 августа 2010

Вам, вероятно, нужно сделать что-то вроде этого:

<img src="../../Mobile/Assets/css/styles.css" />

... в зависимости от того, где на самом деле находится ваш текущий каталог. Вы также можете попробовать что-то вроде:

<img src="~Mobile/Assets/css/styles.css" />

Хороший способ выяснить, каким должен быть фактический путь, - перетащить ресурс (в данном случае styles.css) из Project Explorer в ваше представление и позволить Visual Studio создать путь для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...