ASP.net MVC и дилемма jQueryUI - PullRequest
       11

ASP.net MVC и дилемма jQueryUI

6 голосов
/ 18 октября 2008

Я только что переместил проект в бета-версию фреймворка ASP.net MVC, и единственная проблема, с которой я столкнулся, это 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 находится в папке Content, и когда я проверяю элемент, присутствует css. Я подозреваю, что проблема заключается в сопоставлении этого файла css с папкой images для themeroller, которая также находится в папке Content. Ссылки на изображения в этом файле указаны так: background: url(images/foo.gif)

Нужно ли менять ссылки в этом файле?

Ответы [ 4 ]

4 голосов
/ 18 октября 2008

Если все ваши представления не находятся на одном уровне, вам нужно либо использовать

  • Используйте абсолютный путь, такой как /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

2 голосов
/ 18 октября 2008

это помогает?

http://forums.asp.net/p/1334947/2690469.aspx

Причиной несоответствия является очень просто, хотя я признаю, что это не так легко понять! Когда у вас есть тег внутри , ASP.NET обработает тег и обнаружение URL-адресов и разрешить их относительно корень приложения. Когда у вас есть тег на странице (без runat = "server"), тогда ASP.NET будет оставь в покое, так как это просто старый HTML.

Использование Url.Content () - это подход, который я будет использовать для решения этой проблемы, так как это будет получить разрешение относительно корня приложения, так же, как тег .

0 голосов
/ 18 марта 2009
    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"));
0 голосов
/ 18 октября 2008

Вам необходимо изменить ссылки в jquery-ui-themeroller.css, чтобы они указывали на текущее местоположение изображений.

Как и прежде, вам необходимо обновить путь к изображениям, которые ищет файл CSS.

background: url(images/foo.gif)

Удалите 'images /' из ваших путей, чтобы он выглядел следующим образом:

background: url(foo.gif)

, поскольку ваши css и изображения находятся в папке содержимого.

...