Spark View Engine,覆盖$ {}行为

问题描述:

我想知道你们是否可以帮助我。我使用Spark视图引擎来创建自己的模板引擎,最终创建一个Excel文件。

但是我遇到了一个问题。在这个过程中,我将产生的火花输出推送到XmlDocument中。这会导致我用spark产生非法字符的问题。例如

<foo> 
    <bar>${Model.Something}</bar> 
</foo> 

获取火花解析产生

<foo> 
    <bar>This < is a problem</bar> 
</foo> 

所以我希望有好歹我可以在此改变${},这样我可以对付非法字符。

另请注意,由此产生的火花输出是一个字符串。

有什么想法?

在此先感谢

+0

只要使用Spark的html编码,你有没有试过?它有一个全局配置以及一个函数H()。如果你需要xml编码(而不是htnl编码),你应该能够创建一个宏并用你的输出包装它。 – 2011-03-24 10:59:44

+0

我听说过H方法,由于我使用引擎的方式,似乎我无法访问它。你能解释一下你的marco概念吗?请记住,由此产生的火花输出它一个字符串 – 2011-03-24 11:09:09

+0

我没有使用过你使用Spark的方式,但你应该能够将全局页面的自动编码属性设置为true - 一旦你这样做,所有的输出应该是HTML默认编码。然后,您可以在不希望输出html编码的地方使用special!{}语法。 – 2011-03-24 11:34:09

Had同样的情况,这是解决方法:

<!-- Use instead of built-in H() that only works in HTTP context (Html != null) --> 
<macro name="H" html="string">${System.Web.HttpUtility.HtmlEncode(html)}</macro> 

这样,你不需要改变你的观点,你只需重新定义H()和做$ { H(Model.Something)}照常。

您也可以将此宏放入\ Shared_global.spark中,以便它影响所有视图。

+0

啊我试过这种方法。但最终我创建了自己的抽象火花视图 – 2011-03-28 08:44:50