У меня есть сайт, где я пытаюсь реализовать UI jQuery, базирующийся MessageBox на моей основной странице. Страницы содержания расположены accoring к папкам сферы бизнеса, т.е. '~/Branding/Contracts.aspx'. Я нахожу, что то, когда я загружаю такую страницу содержания, jQuery, на который ссылаются на основной странице как ниже, не загружается. Я предполагаю, что это вызвано тем, что браузер запрашивает 'Брендинг/сценарии/jQuery'. Что я могу сделать об этом? У меня нет 'корневого' оператора в простом теге 'сценария'.
<script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
Используйте это на своей MasterPage
<script src="<%= ResolveUrl("~/Scripts/jquery-1.3.2.js") %>" type="text/javascript"></script>
Пожалуйста, дайте мне знать, если у вас возникнут какие-либо проблемы.
Один из вариантов - передать вызов jQuery на аутсорсинг чему-то вроде AJAX-библиотек Google . Это даст вам дополнительное преимущество, поскольку ваши клиенты, возможно, уже имеют кешированную версию jQuery.
Я использую http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js
Конечно, это не поможет вам, если у вас есть другие настраиваемые сценарии. Для этого я использую следующее в событии загрузки страницы главной страницы, чтобы загрузить мои общие сценарии.
HtmlGenericControl myJs = new HtmlGenericControl();
myJs.TagName = "script"; myJs.Attributes.Add("type", "text/javascript");
myJs.Attributes.Add("language", "javascript"); //don't need it usually but for cross browser.
myJs.Attributes.Add("src", ResolveUrl("~/scripts/jquery-ui-1.7.2.custom.min.js"));
this.Page.Header.Controls.Add(myJs);
Обычно настраивается как функция с параметром для пути скрипта, чтобы упростить загрузку нескольких файлов js.
В Ode To Code есть фантастическая статья о мастер-страницах и подобных вещах: