我是Haxe的新手,我正在尝试使用Ufront。 我在使用erazor模板时遇到了问题:我不知道在输出变量时如何转义html。
使用这个简单的模板:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Users list</title>
</head>
<body>
<ul>
@for(user in users)
{
<li>@user.name</li>
}
</ul>
</body>
</html>
如果任何用户的名称为“<script>
”,则模板只会输出其名称。
我怎样才能在Erazor中正确地进行html逃生?
答案 0 :(得分:3)
感谢Franco的亲切帮助,我在ufront网站上写了一个页面来解释如何在ufront中进行HTML转义。我把这里作为任何感兴趣的人的答案......
为了让html在你的擦除视图中逃脱一个参数, 你可以简单地使用Html辅助方法encode()。
假设你的参数被称为pageContent,它的值是:
<script>
alert("BAD things could happens if you don't properly escape!!");
</script>
您可以使用以下代码转义它:
@Html.encode(pageContent)
您的模板将安全呈现为
<script>
alert("BAD things could happens if you don't properly escape!!");
</script>
Html.encode()内部使用StringTools.htmlEscape()以逃避其参数
答案 1 :(得分:2)
Ufron自动包含包含所需方法的辅助类:
<li>@Html.encode(user.name)</li>