Когда псевдо-URL, передаваемый HTTP-запросу, начинается с косой черты (например, «/ path / to / resource»), псевдо-URL «завершается», обрабатывая его так, как если бы данный путь находился под веб-сайтом. корневой каталог (например, "http://my.site/path/to/directory").
Очевидно, вы ожидали, что псевдо-URL будет обработан так, как если бы указанный путь находился в корневом каталоге вашего веб-приложения. Ну, у меня для вас плохие новости: протокол HTTP не имеет отношения к такому понятию, как «веб-приложение».
ASP.NET MVC Framework предоставляет функцию Url.Content
, которая принимает псевдо-URL, начинающиеся с символа тильды (например, "~ / path / to / resource"), и возвращает результат замены символа тильды на Корневой каталог веб-приложения (например, «http://my.site/an/application/path/to/resource", при условии, что корневым каталогом веб-приложения является« http: /my.site/an/application »). Однако ASP.NET MVC Framework доступен только на стороне сервера. Если ваш JavaScript работает на стороне клиента, он не может вызвать Url.Content
.
Но не все потеряно. ASP.NET MVC Framework позволяет динамически генерировать код JavaScript на сервере и запускать его на клиенте , точно так же, как позволяет динамически генерировать HTML-контент и, конечно, отправлять его на клиент . Таким образом, вы можете расширить псевдо-URL-адреса до фактических URL-адресов на стороне сервера и развернуть полученный код JavaScript на клиенте.