Проблема маршрутизации URL AJAX в IIS с виртуальным каталогом - PullRequest
8 голосов
/ 26 мая 2011

Я получил проект .NET MVC3, который был только что развернут на реальном сервере в виртуальном каталоге. Давайте назовем это VirtDir. Все мои файлы JavaScript имели URL-адреса для AJAX, определенные следующим образом:

"/Home/Save/"

, который работал нормально локально.

На реальном сервере этот первый "/" убивает виртуальный каталог, поэтому я получаю

"/Home/Save/" вместо "/VirtDir/Home/Save/", что явно не получается.

Если я удаляю первый «/», то все происходит локально, что приводит к добавлению определенного URL к URL текущей страницы: если вы находитесь на странице "/Home/Index", URL AJAX будет указывать на

"/Home/Index/Home/Save".

Мой JavaScript находится в отдельных * .js-файлах, поэтому я не могу написать @Url.Content для них.

Кто-нибудь знает хорошее решение этой проблемы?

1 Ответ

22 голосов
/ 26 мая 2011

Вы можете добавить некоторый код в файл макета или главную страницу, который записывает корневой каталог в переменную JS перед включением файла JS. Затем вы можете использовать эту переменную для построения пути в вашем файле JS.

В бритве:

<script type="text/javascript">
    var rootDir = "@Url.Content("~/")";
</script>
<script src="@Url.Content("~/Scripts/MyScript.js")" type="text/javascript"></script>

Тогда вы можете просто создать свой URL-адрес в вашем файле следующим образом:

var myurl = rootDir + "Home/Save/";
...