Дилемма ASP.net MVC и jQueryUI
-
03-07-2019 - |
Вопрос
Я только что перенес проект в бета-версию ASP.net MVC
framework, и единственная проблема, с которой я сталкиваюсь, связана с jQuery
и jQueryUI
.
Вот сделка:
В Site.Master
это следующие ссылки на скрипты:
<script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui.js" type="text/javascript"></script>
И используя их, accordian UI
что у меня на одном из представлений работает отлично, за исключением одной проблемы:изображения из ThemeRoller
не включены на страницу.Если я закомментирую ссылки jQuery, изображения ThemeRoller останутся там.Весь CSS находится в Content folder
и все скрипты находятся в папке Scripts folder
.
Я знаю, что это глупая задача, но она заставляет меня дергаться.
Что мне не хватает?
Обновлять
Я попробовал первый ответ, но безрезультатно, подробности читайте в комментарии.Еще раз спасибо тем, кто смотрит.
Второй подход тоже не работает.Я озадачен.
Еще одно обновление
Используя Url.Content
теги для сценариев действительно позволяют сценариям работать правильно.Использование обычного тега для таблицы стилей переносит на страницу все стили, ЗА ИСКЛЮЧЕНИЕМ всех, связанных с ThemeRoller.
А jquery-ui-themeroller.css
файл находится в папке «Содержимое», и когда я проверяю элемент, CSS присутствует.Я подозреваю, что проблема заключается в сопоставлении этого файла CSS с папкой изображений для themeroller, которая также находится в папке Content.Ссылки на изображения в этом файле, как указано: background: url(images/foo.gif)
Нужно ли менять ссылки в этом файле?
Решение
это помогает?
http://forums.asp.net/p/1334947/2690469.aspx
Причина неудовлетворенности очень проста, хотя я признаю, что ее нелегко понять!Когда у вас естьu003Clink> метка внутриu003Cheadn runat="server"> , Asp.net обработаетu003Clink> Объедините и обнаружите URL -адреса и разрешите их относительно корня приложения.Когда у вас естьu003Cscript> tag on the page (withoutn runat="server") then ASP.NET willn leave it alone since it's just plainn old HTML.
Использование url.content () - это подход, который я бы использовал для решения этого, так как он будет разрешен по сравнению с корнем приложения, как иu003Clink> ярлык.
Другие советы
Если все ваши представления не находятся на одном уровне, вам нужно либо использовать
- Используйте абсолютный путь, например /Scripts/jquery-1.2.6.js.
- Или, что еще лучше, разрешите виртуальный путь, например <%= Url.Content("~/Scripts/jquery-1.2.6.js") %>
Url.Content() http://jvance.com/media/2008/10/18/UrlContent5.media
Вам необходимо изменить ссылки в jquery-ui-themeroller.css, чтобы они указывали на текущее местоположение изображений.
Например, вам необходимо обновить путь к изображениям, которые ищет файл CSS.
background: url(images/foo.gif)
Удалите «images/» из своих путей, чтобы они выглядели так:
background: url(foo.gif)
поскольку ваш CSS и изображения находятся в папке содержимого.
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterClientScriptInclude(this.GetType(),"JQuery", ResolveUrl("~/js/jquery.min.js"));
Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "JQueryUI", ResolveUrl("~/js/jquery-ui.custom.min.js"));