MVC Разрешение URL в файле .JS - PullRequest
0 голосов
/ 25 октября 2011

Итак, у меня есть Javascript в отдельном js-файле (jquerySliderMenu.js)

для разрешения URL-адреса изображения, которое я делаю так: var imgUrl = $ Url.resolve ("~ / Assets /Javascript / Img ");

работает find в dev, (iis 6)

, но в prod (iis 7.5) он разрешается в

https://XXXX.org/Home.mvc.aspx/~/Assets/Javascript/Img/right.gif

вместо

https://XXXX.org/Assets/Javascript/Img/right.gif

Что приводит к ошибке.

Я помню, что ИТ-специалистам пришлось добавить .MVC.вещи, но я не могу вспомнить, почему или как они это сделали.

Есть ли лучший способ решить проблему, которая будет работать с настройками, которые добавляют .mvc.aspx ко всему?(И, пожалуйста, что это за настройка?)

Thansk,

Eric-

1 Ответ

9 голосов
/ 25 октября 2011

Вы не должны пытаться разрешить любые URL-адреса в ваших файлах JavaScript.Вы должны использовать url helpers для генерации их в HTML.Затем Javascript будет ненавязчиво читать и использовать их.

Вы можете использовать атрибуты data- * HTML5, так же, как работает ненавязчивая проверка AJAX и проверка на стороне клиента.Например, давайте предположим, что у вас есть следующий элемент в DOM

<div id="foo" data-url="@Url.Content("~/Assets/Javascript/Img")">some contents</div>

, а затем в вашем javascript:

var imgUrl = $('#foo').data('url');

или в том случае, если вы, например, ненавязчиво AJAXifying привязкиили форму, вы можете напрямую получить атрибуты href или action для соответствующих элементов DOM, которые, конечно, были бы сгенерированы с помощью помощников Url / Html и, таким образом, обеспечивали бы правильные URL-адреса с учетом маршрутов.

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