1

私は 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>' の場合、テンプレートは単にその名前に対して <script> を出力します。

Erazor で適切に HTML エスケープするにはどうすればよいですか?

4

2 に答える 2

3

ビュー引数を HTML エスケープする方法

Erazor ビューで引数を 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() を内部的に使用します。

Franco の親切な助けのおかげで、Ufront サイトに、Ufront で HTML をエスケープする方法を説明するページを書きました。

于 2012-09-07T21:57:31.113 に答える
2

Ufron は、必要なメソッドを含むヘルパー クラスを自動的に含めます。

<li>@Html.encode(user.name)</li>
于 2012-09-07T19:57:08.440 に答える