如何在Erazor中逃脱Html?

时间:2012-09-06 16:03:29

标签: haxe ufront erazor

我是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逃生?

2 个答案:

答案 0 :(得分:3)

感谢Franco的亲切帮助,我在ufront网站上写了一个页面来解释如何在ufront中进行HTML转义。我把这里作为任何感兴趣的人的答案......

如何html转义视图参数

为了让html在你的擦除视图中逃脱一个参数, 你可以简单地使用Html辅助方法encode()。

假设你的参数被称为pageContent,它的值是:

<script>
    alert("BAD things could happens if you don't properly escape!!");
</script>

您可以使用以下代码转义它:

@Html.encode(pageContent)

您的模板将安全呈现为

&lt;script&gt;
    alert("BAD things could happens if you don't properly escape!!");
&lt;/script&gt;

Html.encode()内部使用StringTools.htmlEscape()以逃避其参数

答案 1 :(得分:2)

Ufron自动包含包含所需方法的辅助类:

<li>@Html.encode(user.name)</li>