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 及更高版本,则可以使用<%: %>块来处理响应写入类型情况和<%#: %>数据绑定情况。

Scott Guthrie 对此有一篇很棒的文章

于 2013-03-26T16:06:09.233 回答