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

17
我正在探索ASP.NET MVC,并希望添加jQuery以使网站更具交互性。我使用了StringTemplate,移植到了.Net,作为我的模板引擎来生成html并发送JSON。然而,当我查看页面时,我无法看到它。调试后,我意识到$被StringTemplate用于访问属性等,而jQuery也用它来操作DOM。唉,我查看了其他模板引擎,大多数都使用美元符号:(。
有没有适用于ASP.Net MVC的替代模板引擎?我想保留jQuery,因为MSFT宣布将在Visual Studio(2008?)中使用它。
提前感谢:)
更新
请参阅ASP.NET MVC View Engine Comparison问题中的答案,了解适用于ASP.NET MVC的模板引擎的全面列表及其优缺点
更新2
最终我将JavaScript代码(包括JQuery)放在一个单独的脚本文件中,因此我不必担心在模板文件中混杂的$。
更新3
更改标题以反映我需要解决的问题。毕竟,“The Best X in Y”是非常主观的问题。

我听说过StringTemplate很棒,如果你能按照下面建议的方式更改ANTLR限定符并让它正常工作,那将会非常有趣... - Xian
“$” 的分隔符有什么更好的选择吗?可以使用“<$ ... $>”吗? - OnesimusUnbound
1
https://dev59.com/i3M_5IYBdhLWcg3wQQ3w - Mauricio Scheffer
14个回答

0

我发现Mustache是最傻瓜式、易于使用、最轻量级的全功能模板引擎,适用于.Net项目(Web和后端)。

它与.Net 3.5兼容良好(这意味着它不需要动态类型和.Net 4.0来处理混合类型模型,如Razor)。

我最喜欢的部分是能够在其中嵌套任意IDicts,并让引擎做正确的事情。这使得对于所有引擎来说强制性的重新装箱步骤变得超级简单:

var child = new {
    nested = "nested value"
};
var parent = new {
    SomeValue = "asdfadsf"
    , down = child
    , number = 123
};

var template = @"This is {{#down}}{{nested}}{{/down}}. Yeah to the power of {{number}}";

string output = Nustache.Core.Render.StringToString(template,parent);
// output:
// "This is nested value. Yeah to the power of 123"

Mustache最美妙的地方在于,同一个模板可以在纯JavaScript或其他20多种支持的语言中完全相同地工作。


我有相关经验,但是我没有看到任何本地化内容的选项。在我的test.aspx模板页面上使用全局资源将解析为“<%=Resources.Test.FirstName%>”。 - jimmyo

0

如果我正确理解了StringTemplate版本4,您可以在 Template (或 TemplateGroup )构造函数中定义自己的转义字符。


0

0
你可能需要使用这个.NET模板引擎。如果你想要使用'$'字符,只需使用'$$'。请参考下面的代码:
{%carName = "Audi R8"/}

{%string str = "This is an $carName$"/}

$str$
$$str$$

输出结果将会是:

This is an Audi R8
$str$

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接