À l'aide de scripts dans une page principale avec ASP.NET MVC
Je suis assez nouveau à l'ASP.NET MVC, et je vais avoir un peu de mal avec les scripts... en particulier, je veux utiliser jQuery dans la plupart des pages, il est donc logique de le mettre dans la page maître. Cependant, si je fais (à partir de mon ~/Views/Shared/Site.Master
):
<script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script>
Alors que c'est littéralement ce qui se passe vers le client - qui bien sûr ne fonctionne que si notre itinéraire actuel arrive à avoir le bon nombre de niveaux. En commençant par ~/Scripts/...
ne fonctionne pas. En commençant par /Scripts/...
ne fonctionne que si le projet était à la racine du site (dont je ne veux pas assumer).
J'ai une approche de travail (je vais poster ci-dessous) - mais: suis-je raté quelque chose?
Je préfère ne pas avoir à impliquer un script manager, qui semble à la défaite de la simplicité de l'ASP.NET modèle MVC... ou suis-je trop se préoccuper?
Voici la façon dont je peux obtenir ce travail, qui fonctionne aussi pour les non-trivial virtuals - mais il semble compliqué:
<script src="<%=Url.Content("~/Scripts/jquery-1.2.6.js")%>" type="text/javascript"></script>
- L'ennuyeux chose à ce sujet, est que l'utilisation de la "~" préfixe fonctionne très bien pour l'attribut href de <lien> les éléments, mais pas pour la 'src' attribut de <script> éléments
- Ce qui vous fait dire que cela ne fonctionne pas dans l'attribut src d'une balise de script?
Vous devez vous connecter pour publier un commentaire.
J'ai un AppHelper classe avec quelques méthodes pour ajouter des références de script:
dans votre page principale, vous pouvez utiliser:
Je pense que le plus simple est d'utiliser le suivent, et il travaille en vue d'.
Sur la base des autres réponses, peut-être une méthode d'extension sur le code Html (ce qui est très courant pour MVC), similaire à Eduardo de réponse:
Avec:
Pourquoi ne pas simplement le point de votre page maître à Google js d'hébergement de fichiers? Alors, même quand il s'agit de déploiement (en supposant que votre site est Net de face), vous pouvez l'abus éventuellement pré-en cache de fichiers jquery?
J'ai fait partie de ce que JO mentionne, j'ai créé un GoogleHelper classe avec cette méthodes
Maintenant, je suis en ajoutant plus de méthodes pour obtenir certains ClientLocation de données 😉
Au travail que nous faisons quelque chose comme ceci à partir du code ASP derrière:
Je ne sais pas si c'est possible de le faire avec ASP.NET MVC.
ResolveUrl est la solution la plus élégante de l'OMI. Si c'est une véritable honte de l'url de CSS sont résolus par runat=server et pas le script.
Vous devriez jeter un oeil à l'aide d'un utilitaire comme l'écraser. Il peut agréger et de dissimuler tous vos css et js fichiers pour vous. Ou vous pouvez l'utiliser pour générer des balises de script, si vous venez de le garder en debug plus en utilisant ForceDebug()
http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher
Je viens d'utiliser une barre oblique(/).
Par Exemple:
lorsque l' "jquery-1.4.1.js" le fichier est dans le répertoire du Script de la racine.
Et il fonctionne parfaitement.
Nos applications sont déployées à l'aide de répertoires virtuels, et nous avons eu des problèmes avec d'autres réponses mentionnées ici (ne pas résoudre correctement le chemin d'accès). Une façon de faire qui a bien fonctionné (pas de la seule façon, vous l'esprit), a été d'utiliser cette:
Vous pouvez essayer d'Url.Contenu de la méthode d'extension avec la syntaxe Razor