ASP.net MVC et dilemme jQueryUI
-
03-07-2019 - |
Question
Je viens de déplacer un projet vers la version bêta du framework ASP.net MVC
et le seul problème que je rencontre est avec jQuery
et jQueryUI
.
Voici le deal:
Dans Site.Master
se trouvent 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 avec ceux-ci, le accordian UI
que j'ai sur l'une des vues fonctionne parfaitement, sauf pour 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à. Tous les css sont 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?
Mettre à 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érouté.
Une autre mise à jour
L'utilisation des balises Url.Content
pour les scripts permet en effet de les exécuter correctement. L’utilisation d’une balise standard pour la feuille de style permet d’obtenir 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 soupçonne que le problème vient du mappage de ce fichier css vers le dossier images du lecteur, qui se trouve également dans le dossier Contenu. Les liens d’image dans ce fichier sont spécifiés comme suit: background: url(images/foo.gif)
Les liens dans ce fichier doivent-ils changer?
La solution
Est-ce que cela vous aide?
http://forums.asp.net/p/1334947/2690469.aspx
La raison de l'inconstance est très simple, bien que j'avoue que ce n'est pas facile à comprendre! Quand vous avez un < link > tag à l'intérieur d'une < tête runat = " serveur " > ;, ASP.NET traitera le < lien > marquer et détecter les URL et les résoudre par rapport à la racine de l'application. Quand vous avez un < script > tag sur la page (sans runat = " serveur ") alors ASP.NET laissez-le tranquille car il est tout simplement ancien HTML.
Utiliser Url.Content () est l’approche que je utiliserait pour résoudre cela car ça va se résoudre par rapport à la racine de l'application, tout comme le < link > tag.
Autres conseils
À moins que toutes vos vues soient au même niveau, vous devez soit utiliser
.- Utilisez un chemin absolu tel que /Scripts/jquery-1.2.6.js
- Ou mieux encore, résolvez un chemin virtuel tel que <% = Url.Content (& "; ~ / Scripts / jquery-1.2.6.js &";)% >
Url.Content () http://jvance.com/media/ 2008/10/18 / UrlContent5.media
Vous devez modifier les liens dans jquery-ui-themeroller.css pour qu'ils pointent 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)
Supprimez les 'images /' de vos chemins pour les rendre comme suit:
background: url(foo.gif)
car votre css et vos images se trouvent dans le dossier de contenu.
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"));