发送/转义美元符号后跟大括号

时间:2012-07-31 19:04:42

标签: spark-view-engine

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

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

谢谢!

1 个答案:

答案 0 :(得分:5)

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

  1. 单项逃脱
  2. 整个块逃脱
  3. 单件物品逃逸

    这可以通过为每种表达式类型使用三个转义字符之一来完成。而不是解释,以下是如何在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>
    

    希望有所帮助,
    罗布