JQuery的$与ASP.Net MVC中的StringTemplate.Net冲突

One*_*und 17 asp.net asp.net-mvc templates stringtemplate

我正在探索ASP.NET MVC,我想添加jQuery以使网站具有交互性.我使用StringTemplate移植到.Net,作为我的模板引擎生成html并发送JSON.但是,当我查看页面时,我看不到它.调试之后,我意识到String用于访问属性等$,而jQuery也使用它来操作DOM.哎呀,我看过其他模板引擎,其中大多数使用美元符号:(.

ASP.Net MVC的任何替代模板引擎?我想保留jQuery,因为MSFT宣布它将用于Visual Studio(2008?)

提前致谢 :)

更新

请转到ASP.NET MVC视图引擎比较问题中的答案,获取ASP.NET MVC模板引擎的完整列表,以及它们的优缺点

更新2

最后,我将把JavaScript代码(包括JQuery)放在一个单独的脚本文件中,因此我不担心$模板文件中的混合.

更新3

更改了标题以反映我需要解决的问题.毕竟"Y中的最佳X"是非常主观的问题.

jam*_*ode 13

您当然可以将js逻辑移动到.js文件中.但是,如果您希望它与StringTemplate视图内联,则可以使用\ $构造对其进行转义.

此外,如果要避免转义语法,可以简单地使用jQuery("selector")而不是$("selector")构造.

这是一篇关于在MVC中使用StringTemplate作为View Engine的好文章.

还有一个附带的OpenSource引擎,以及一些样本.

此外,如上所述,您可以修改您的Type Lexer.(使它成为$的替代字符).

  • 无论如何,使用jQuery而不是$是一个很好的habbit,因为原型和ms ajax库无论如何劫持$,你想明确知道什么是jQuery,什么不是那么好. (3认同)

Chr*_*nal 10

我强烈推荐Spark.我现在用jQuery已经使用了一段时间,到目前为止还没有遇到过一个问题.

  • Spark不会与jQuery冲突,因为$只能直接在{expression}前面识别.没有以"$ {"开头的有效jQuery语句. (2认同)

Rob*_*vey 7

可以通过使用如下的jQuery关键字来消除JQuery的歧义:

jQuery(
Run Code Online (Sandbox Code Playgroud)

而不是这个:

$(
Run Code Online (Sandbox Code Playgroud)

我认为这是一种最佳做法.它消除了与其他库发生冲突的任何可能性,并使代码更具可读性.


Joh*_*han 6

也许jQuery.noConflict会适合你

  • 我认为这个选项不适用于StringTemplate.Stringtemplate不是JavaScript库.当使用另一个JavaScript库并且该库使用$时,使用noConflict() (2认同)
  • 为什么不使用"jQuery"而不是"$" (2认同)