14

これがばかげた質問なら許してください。明確に述べられている答えを見つけることができませんでした。

aspxページでBind()またはEval()を使用することはめったになく、代わりに次の構文を使用します:(これはRepeaterコントロールのItemTemplateにあると想定します)

<asp:Label id="lblFirstName" runat="server" Text='<%# Microsoft.Security.Application.AntiXss.HtmlEncode(DataBinder.Eval(Container.DataItem, "FirstName").ToString()) %>

私はずっと前にこれを始めて、単にそれを疑うことはありませんでした、しかし今、これはやり過ぎかもしれないと私は思います。そして今、私はこの構文をいたるところに使用するCMSを使用しています。

<asp:Label id="lblFirstName" runat="server" Text='<%# Bind("FirstName") %>

したがって、基本的に、Bind()またはEval()を使用すると、ランタイムは自動的に出力をHtmlEncodeしますか?私はずっと不必要なコーディングをしていましたか?

4

1 に答える 1

21

Bind()とEval()は、そのタイプのことを防ぐために何もせず、エンコードしません。<%# %>スタイルコードブ​​ロックも同様です。

ただし、ASP.NET 4以降を使用している場合は、<%: %>ブロックを使用して、応答書き込みタイプの状況および<%#: %>データバインドの状況でこれを処理できます。

スコットガスリーはこれについて素晴らしい投稿をしています。

于 2013-03-26T16:06:09.233 に答える