有幾個職位,包括this關於Html轉義,但這不適合我。如果我有這樣一個簡單的模板:如何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>
它逃脫了一切。
我該如何逃避只添加到模板的字段?
謝謝,我會給這個去。有人認爲我覺得難以確定文檔適用的stringtemplate版本。從你的鏈接看起來是v2.2 +希望它在v4中沒有改變...另外,從你的例子我認爲它應該是
$ field; format =「htmlTag」$。 –是的我認爲你是對的我已經用正確的ST語法更新了答案。一般來說,對於任何版本都沒有語言參考。我進入了以我期望它的工作方式編寫語法的情況,並且它沒有,因爲語言不支持這種方式。我同意很難去「正確」的方式語法,但只要在舊版本中有一個功能,我確信在將來的版本中仍然會有不同的語法。 P.S:ST4似乎也有相同的語法:[link](http://www.antlr.org/wiki/display/ST4/Renderers) – Har