Я загружаю некоторый контент через jQuery.load ('/ Business/Tags'), который хорошо работает при использовании моего локального веб-сервера. Но при использовании iis это не решает правильно. Я видел пару различных способов обойти это, например ResolveUrl. Каков наилучший способ обработки разрешающих URL-адресов в вашем javascript?ASP.NET MVC разрешает URL-адреса в javascript
ответ
Я столкнулся с этой проблемой с моим JavaScript. Поскольку мой JavaScript был также в отдельном файле, который был включен в мою главную страницу, я не мог использовать ResolveUrl в моем случае.
Вот как я решил это в моем случае. Я включил следующий JavaScript в моей голове тега в моей главной странице: в верхней части
<script type="text/javascript">
var baseUrl = "<%= Request.Url.GetLeftPart(UriPartial.Authority) %>";
</script>
Я устанавливаю глобальную переменную, доступной для всех моих файлов JavaScript называемых BaseUrl.
Ваш код будет затем стать:
jQuery.load(baseUrl + '/Business/Tags');
Что касается меня, я использую Url.Action/Url.RouteUrl хелперы с JavaScript/JQuery, где можно:
$.load('<%= Url.Action("Tags", "Business") %>')
или
$.load('<%= Url.RouteUrl("BusinessTagsRoute") %>')
В других случаях я использую ResolveUrl помощника (из MVCContrib или ваш может написать свой собственный):
$.load('<%= Url.ResolveUrl("~/Business/Tags") %>')
ОБНОВЛЕНО:
Также можно создать специальный контроллер для JavaScript/JQuery с действиями, возвращая PartialViews с JavaScript:
public ActionResult YourJavaScript()
{
Response.ContentType = "application/x-javascript";
return PartialView("YourJavaScript");
}
Затем в YourJavaScript.ascx вас может использовать код JavaScript/jQuery с тегами сервера WebForms. Я по-прежнему рекомендую не использовать мало закодированные URL-адреса в jQuery/AJAX
Если вы разместите весь свой JavaScript в отдельном файле, а затем ссылаетесь на этот файл, используя Url.Content на главной странице, Url.ResolveUrl не будет работать в вашем JavaScript. Кто-то, пожалуйста, поправьте меня, если я ошибаюсь. –
Я по-прежнему рекомендую использовать базовый тег href на главной странице. поэтому любые образы или вызовы javascript будут устранены из этого URL-адреса. Это позволит вам поместить ваши javascript-функции/вызовы во внешний файл js.
<html> <head> <base href="http://www.mysite.com/virtual_dir1/"> <script src="location_of_js_file">
Запомните окончание '/' в базе href.
Кроме того, удалите ведущие «/», и всякий раз, когда вы делаете jQuery.load («Бизнес/Метки»), это действительно будет от http://www.mysite.com/virtual_dir1/Business/Tags.
Мне действительно очень нравится этот подход. Такой чистый и требует такого небольшого усилия. Спасибо – lomaxx
Это определенно прагматичный подход к проблеме, но используя ['base'] (http://www.w3.org/TR/REC-html40/struct/links.html#h-12.4) таким образом, неверен. Базовый HREF должен использоваться только для разрешения относительных URI на текущую страницу, на которой вы находитесь. Установив 'base' таким образом ** все ** относительные URI на этой странице будут указывать на' http: // www.mysite.com/virtual_dir1/'. – ahsteele
Несколько способов, которые мы делаем это в наших приложениях:
var applicationPath = '<%= Url.Content("~/") %>';
ИЛИ
var applicationPath = '<%= Request.Url.Scheme %>://<%= Request.Url.Host %><%= Request.ApplicationPath %>/';
Затем мы используем ApplicationPath как базовый URL для всех наших Ajax звонки.
- 1. Asp.net MVC разрешает Http/Https
- 2. Атрибут разрешает анонимность только в ASP.Net MVC
- 3. ASP.NET MVC аутентифицирует и разрешает несуществующие пользователи
- 4. ASP.NET MVC без javascript
- 5. Javascript с ASP.NET MVC
- 6. ASP.NET MVC JavaScript Routing
- 7. asp.net mvc javascript postback
- 8. ASP.NET MVC и javascript
- 9. дескриптор javascript в asp.net mvc
- 10. ASP.NET MVC теги в javascript?
- 11. JavaScript в ASP.NET MVC 4
- 12. ASP.NET MVC Javascript ActionResult
- 13. asp.net-mvc: кеширование javascript
- 14. JavaScript-автоответчик JavaScript в Asp.Net MVC
- 15. Где виртуальный путь ASP.NET разрешает тильду «~»?
- 16. asp.net mvc C# javascript web.config
- 17. ASP.Net MVC VS Javascript UI
- 18. Javascript Uncaught ReferenceError - ASP.NET MVC
- 19. ASP.Net MVC привязка к javascript
- 20. asp.net mvc динамическое меню javascript
- 21. asp.net mvc: обработка no-javascript
- 22. ASP.NET MVC - Razor и JavaScript
- 23. Javascript date picker asp.net mvc
- 24. ASP.NET MVC EditorFor пользовательских Javascript
- 25. Обработка Javascript и ASP.NET MVC
- 26. Разрешает ли Unity MVC типы по умолчанию?
- 27. Добавить файлы JavaScript в asp.net mvc
- 28. ASP.NET MVC и относительные пути в Javascript
- 29. Отправка массива Javascript в контроллер ASP.NET MVC
- 30. Как вставить javascript в Asp.net MVC view
Я пробовал этот метод, но я не понимаю, что мне нужно, но я думаю, что смогу с ним работать.Я получаю строку вроде этого «http: // mtsengv003 /», но мне нужен такой «http: // mtsengv003/MVC /». Спасибо – 2009-05-28 21:13:35
Я думаю, что лучше использовать: var baseUrl = "<% = Запрос .Url.GetLeftPart (UriPartial.Authority) + Request.ApplicationPath.TrimEnd ('/')%> "; –
@ eu-ge-ne: Спасибо, что указали это. Моя память не так, как раньше. Ваш код идеален. –