通过大括号发出/转义一个美元符号

Don*_*100 2 spark-view-engine

我尝试使用Spark视图引擎发出一个文字美元符号,打开大括号,文本和关闭大括号.我怎样才能让Spark发出${Hello},而不是试图评估变量名Hello?我能想到的最好的是${'$'}{Hello},但这看起来太复杂了,而且难以阅读.

对于上下文,我使用Spark作为ASP.NET MVC视图引擎,但我也将它用作模板引擎,因此我的应用程序的(高级)用户可以在文本区域中键入一个简单的Spark视图并保存它呈现电子邮件等

谢谢!

Rob*_*rey 5

有两种方法可以转义Spark代码表达式:

  1. 单项逃脱
  2. 整个块逃脱

单项逃脱

这可以通过为每种表达式类型使用三个转义字符之一来完成.而不是解释,以下是如何在您的spark视图中执行此操作的示例:

<div>
    $${Encoded.Escaped.with.a.dollar < 0}
    \${Encoded.Escaped.with.a.backslash < 0}
    `${Encoded.Escaped.with.a.backtick < 0}
</div>
<div>
    !!{Unencoded.Escaped.with.a.dollar < 0}
    \!{Unencoded.Escaped.with.a.backslash < 0}
    `!{Unencoded.Escaped.with.a.backtick < 0}
</div>
<div>
    $$!{Encoded.Silent.Nulls.Escaped.with.a.dollar < 0}
    \$!{Encoded.Silent.Nulls.Escaped.with.a.backslash < 0}
    `$!{Encoded.Silent.Nulls.Escaped.with.a.backtick < 0}
</div>
Run Code Online (Sandbox Code Playgroud)

导致以下逐字输出:

<div>
    ${Encoded.Escaped.with.a.dollar < 0}
    ${Encoded.Escaped.with.a.backslash < 0}
    ${Encoded.Escaped.with.a.backtick < 0}
</div>
<div>
    !{Unencoded.Escaped.with.a.dollar < 0}
    !{Unencoded.Escaped.with.a.backslash < 0}
    !{Unencoded.Escaped.with.a.backtick < 0}
</div>
<div>
    $!{Encoded.Silent.Nulls.Escaped.with.a.dollar < 0}
    $!{Encoded.Silent.Nulls.Escaped.with.a.backslash < 0}
    $!{Encoded.Silent.Nulls.Escaped.with.a.backtick < 0}
</div>
Run Code Online (Sandbox Code Playgroud)

整个块逃脱

您可以使用新的<ignore>特殊标记逐字输出块内的任何内容,如下所示:

<html>
  <head>
    <title>ignore test</title>
  </head>
  <body>
    <h1>ignore test</h1>
    <p>${System.DateTime.Now}</p>
    <ignore>
        <div>
            Regular text ${This.isnt.code < 0}
            <var dummy="This isn't a variable" />
        </div>
    </ignore>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

希望有所帮助,
Rob