2008-10-18 13 views
6

Je viens de déplacer un projet à la version bêta du cadre ASP.net MVC et le seul problème que j'ai est avec jQuery et jQueryUI.ASP.net MVC et jQueryUI dilemme

est ici l'affaire:

En Site.Master sont les références de script suivantes:

<script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery-ui.js" type="text/javascript"></script> 

Et en utilisant ceux-ci, le accordian UI que j'ai sur l'une des vues fonctionne parfaitement, sauf un problème: Les images de ThemeRoller ne sont pas incluses dans la page. Si je commente les références jQuery, les images de ThemeRoller sont là. Tout le CSS est dans le Content folder et tous les scripts sont dans le Scripts folder. Je sais que c'est un problème de chemin idiot, mais ça me fait trembler.

Qu'est-ce qui me manque?

Mise à jour

J'ai essayé la première réponse en vain, lisez le commentaire pour plus de détails. Merci encore pour ceux qui regardent.

La deuxième approche ne fonctionne pas non plus. Je suis déconcerté.

Une autre mise à jour

En utilisant les balises Url.Content pour les scripts ne permettent en effet les scripts pour fonctionner correctement. L'utilisation d'une balise régulière pour la feuille de style obtient tous les styles sur la page SAUF pour tous ceux liés à ThemeRoller.

Le fichier jquery-ui-themeroller.css se trouve dans le dossier Contenu et lorsque j'inspecte un élément, le CSS est présent. Je suspecte que le problème est dans le mappage de ce fichier css vers le dossier images pour le themeroller, qui se trouve également dans le dossier Content. Liens image dans ce fichier comme suit: background: url(images/foo.gif)

Les liens de ce fichier doivent-ils être modifiés?

Répondre

2

cette aide?

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

La raison de la inconstistency est très simple, bien que je l'avoue n'est pas facile à comprendre!Lorsque vous avez un lien <tag> dans une < tête runat = « server » >, ASP.NET traitera la balise lien < > et détecter les URL et les résoudre par rapport à la racine de l'application . Lorsque vous avez un <script> tag sur la page (sans runat = "server") puis ASP.NET va laisser seul, car il est tout simplement ancien HTML.

L'utilisation Url.Content() est l'approche que je utiliserais pour résoudre ce car il va se résoudre par rapport à la racine de l'application, comme la balise link < >.

+0

Cela m'a aidé à mieux comprendre le problème et à me rapprocher, mais la solution est encore à portée de main. – KevDog

+0

Il s'avère que le problème était que le thème téléchargé à partir de ThemeRoller ne fonctionne pas hors de la boîte. Merci pour le pointeur vers l'explication. – KevDog

4

À moins que tous vos points de vue sont au même niveau, vous devrez soit utiliser

  • Utilisez un chemin absolu, comme /Scripts/jquery-1.2.6.js
  • Ou mieux encore, résoudre un chemin virtuel tel que <% = Url.Content ("~/scripts/jquery-1.2.6.js")%>

Url.Content() http://jvance.com/media/2008/10/18/UrlContent5.media

+0

J'ai essayé la possibilité d'utiliser la balise Url.Content, qui a changé une chose: Maintenant, avec tout décommentée, les images affichent mais le jQueryUI ne fonctionne pas. – KevDog

0

Vous devez modifier les liens dans jquery-ui-themeroller.css pour pointer vers l'emplacement actuel des images.

Comme dans, vous devez mettre à jour le chemin des images que le fichier css recherche.

background: url(images/foo.gif) 

Retirez les 'images /' de vos chemins pour le faire ressembler à:

background: url(foo.gif) 

à la fois votre css et les images sont dans le dossier de contenu.

0
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"));