有一些关于 Html 转义的帖子包括这个,但这对我不起作用。如果我有一个简单的模板,例如:
<html><body>$field$</body></html>
我只需要转义字段,而不是整个模板。我创建了一个自定义渲染,它使用 System.Web.HttpUtility 类来执行字符串的转义:
class HtmlRenderer : IAttributeRenderer
{
public string ToString(object obj, string formatString, System.Globalization.CultureInfo culture)
{
return HttpUtility.HtmlEncode(
new StringRenderer().ToString(obj, formatString, culture));
}
}
以及一些使用一些数据呈现模板的示例代码:
public static string Render()
{
var group = new TemplateGroup('$', '$');
group.RegisterRenderer(typeof(string), new HtmlRenderer());
var template = new Template(group, "<html><body>$field$</body></html>");
template.Add("field", "Chalk & Cheese");
return template.Render();
}
返回以下内容:
<html><body>Chalk & Cheese</body></html>
它逃脱了一切。
如何仅转义添加到模板中的字段?