2

我正在尝试使用 Spark 视图引擎发出一个文字美元符号、打开大括号、文本和关闭大括号。如何让 Spark 发出${Hello},而不是尝试评估变量名Hello?我能想到的最好的是${'$'}{Hello},但这似乎太复杂而且难以阅读。

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

谢谢!

4

1 回答 1

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>

导致以下逐字输出:

<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>

整个块逃逸

您可以使用新的<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>

希望有帮助,
罗布

于 2012-08-14T09:10:24.920 回答