Le $ de JQuery est en conflit avec celui de StringTemplate.Net dans ASP.Net MVC
Je suis à explorer ASP.NET MVC et je voulais ajouter jQuery pour rendre le site interactif. J'ai utilisé StringTemplate, porté .Net, comme mon moteur de template pour générer des pages html et de les envoyer JSON. Cependant, lorsque j'affiche la page, je ne pouvais pas le voir. Après le débogage, j'ai réalisé que le $ est utilisé par le StringTemplate à accéder à la propriété, etc et jQuery utilise trop de manipuler le DOM. Ben, j'ai regardé sur d'autres moteurs de template et la plupart d'entre eux utilise le signe dollar :(.
Toute alternative au moteur de template ASP.Net MVC? Je voulais conserver jQuery parce que MSFT a annoncé qu'il sera utilisé dans Visual Studio (2008?)
Merci d'Avance 🙂
Mise à jour
S'il vous plaît aller à la réponse dans ASP.NET MVC Vue du Moteur de Comparaison question pour une liste complète de moteur de Template ASP.NET MVC, et leurs avantages et inconvénients
Mise à jour 2
À la fin, je vais juste mettre le code JavaScript, y compris JQuery, dans un fichier de script, donc je ne serais pas s'inquiéter à propos de la $
de mélange dans le fichier de modèle.
Mise à jour 3
Changé le Titre pour refléter ce que je dois résoudre. Après tout, "Le Meilleur de X dans Y" est très subjective de la question.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Bien sûr, vous pouvez déplacer votre js logique dans un .fichier js. Mais si vous voulez en ligne avec votre StringTemplate vues, vous pouvez échapper à l'aide de l' \$ de construire.
En outre, vous pouvez simplement utiliser le jQuery("sélecteur"), au lieu de $("sélecteur") construire si vous voulez éviter la trajectoire de la syntaxe.
Voici un bon article sur à l'aide de StringTemplate comme un Moteur d'Affichage en MVC.
Il y a également un accompagnement OpenSource moteur, ainsi que quelques échantillons.
Aussi, comme mentionné ci-dessus, vous pouvez modifier votre Type d'analyseur lexical. (il est un autre personnage de l' $).
Je vous recommande fortement de Spark. Je l'ai utilisé pendant un certain temps maintenant avec jQuery et n'ai pas rencontré un seul problème à ce jour.
JQuery ambiguïté peut être levée en utilisant jQuery mot-clé comme ceci:
au lieu de cela:
Je considère cela comme une bonne pratique. Il élimine toute possibilité de conflit avec une autre bibliothèque, et rend le code plus lisible.
Peut-être jQuery.noConflict va travailler pour vous
Ont un look à la mvccontrib projet. Ils ont 4 différents moteurs de visualisation à l'heure actuelle, qui sont en braille, nhaml, nvelocity et xslt.
http://www.codeplex.com/MVCContrib
Dans le cas où vous voulez coller avec StringTemplate (ST) voir cet article de la ST wiki. Vous pouvez également modifier le comportement totalement par l'édition Antlr.StringTemplate.Langue\DefaultTemplateLexer.cs et le remplacement de la "$" avec ce que vous voulez.
J'aime vraiment la syntaxe dans Django, donc je vous recommande de NDjango 🙂
Avez-vous essayé de $ $ /$ pour échapper à l'signes dollar dans le modèle de chaîne? Je ne suis pas sûr à propos de SAINT en particulier, mais c'est la façon dont la plupart des moteurs de template de travail.
Comme pour les autres moteurs de template, j'ai vraiment aimé nVelocity quand je l'ai utilisé sur un projet.
JsonFx.NET a un puissant client-côté moteur de template avec familier ASP.NET la syntaxe de style. La totalité de la structure est spécifiquement conçu pour fonctionner avec jQuery et ASP.NET MVC. Vous pouvez obtenir des exemples de la façon de construire du monde réel de l'INTERFACE utilisateur à partir de: http://code.google.com/p/jsonfx-examples/
J'ai été en utilisant ANTLR StringTemplate pour ASP.NET projet MVC. Cependant ce que j'ai fait a été d'étendre la StringTemplate de la grammaire (de modèle.g) de reconnaître '%' (aspx.de modèle.g) comme délimiteurs. Vous pouvez trouver ces fichiers si vous téléchargez le StringTemplate.net version. J'ai généré les fichiers correspondants: AspxTemplateLexer.cs, AspxTemplateParser.cs, AspxTemplateParserTokenTypes.cs et AspxTemplateParserTokenTypes.txt.
En outre, j'ai modifié StringTemplateLoader.cs de reconnaître les extensions .aspx et .ascx Visual Studio reconnaît. De cette façon, je ne suis pas coincé avec la .saint extension et les clients ne savent pas la différence.
De toute façon après la reconstruction de StringTemplate j'ai le comportement que je veux. Ce que j'aime à propos de StringTemplate est qu'il ne permet PAS de code pour être incorporées dans le modèle. Il ressemble Étincelle comme la valeur par défaut ASP/MVC modèle de code est permissive, ce qui rend les modèles moins portable.
Je préfère est "<%" et "%>" comme délimiteurs, mais malheureusement, la grammaire ANTLR semble quelque peu difficile et fragile à modifier, à moins que quelqu'un d'autre l'a fait. D'autre part, ont StringTemplate a un grand soutien de la communauté et une bonne approche de la séparation-qui est le point de MVC.
Vous pouvez essayer de jsRepeater.
Vous pouvez avoir besoin de cette .NET Moteur de Template. Si vous souhaitez utiliser le caractère'$', il suffit d'utiliser '$$'. Voir le code ci-dessous:
la sortie sera
Si je comprends StringTemplate version 4 correctement, vous pouvez définir votre propre escape char dans
Template
(ouTemplateGroup
) constructeur.Trouvé la Moustache la plus infaillible, plus facile à utiliser, léger complète de moteur de template .Net de projets (Web et backend)
Fonctionne bien avec .Net 3.5 (ce qui signifie qu'il n'a pas besoin de type dynamique et .Net 4.0 de travail mixte, type de modèles, à l'instar de Rasoir).
La partie que j'aime le plus c'est la capacité de nid arbitraire IDicts à l'intérieur et le moteur doit faire la bonne chose. Cela rend obligatoire pour tous les moteurs de reboxing étape super-simple:
Ce qui est le plus beau sur la Moustache, c'est que même modèle fonctionne exactement de même dans le plus pur JavaScript ou un autre de 20 langues prises en charge.