我尝试使用Spark视图引擎发出一个文字美元符号,打开大括号,文本和关闭大括号。如何让Spark发出${Hello}
,而不是尝试评估变量名Hello
?我能想出的最好的是${'$'}{Hello}
,但这看起来太复杂了,而且难以阅读。
对于上下文,我使用Spark作为ASP.NET MVC视图引擎,但我也将它用作模板引擎,因此我的应用程序的(高级)用户可以在文本中键入一个简单的Spark视图区域并保存它以呈现电子邮件等。
谢谢!
答案 0 :(得分:5)
有两种方法可以转义Spark代码表达式:
这可以通过为每种表达式类型使用三个转义字符之一来完成。而不是解释,以下是如何在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>
希望有所帮助,
罗布