我有一个GridView绑定到一个ObjectDataSource。我也有支持编辑,这工作很好。但是,我希望安全地显示HtmlEncode文本,因为我们允许某些字段中的特殊字符。这是与标准BoundFields相关的,因为我只是将HtmlEncode设置为true。
但是为了设置验证控件,需要使用TemplateFields。如何轻松地添加HtmlEncoding来输出这种方式?这是一个ASP.NET 2.0项目,所以我正在使用较新的数据绑定快捷方式(例如Eval和Bind)。
我想做的是如下:
<asp:TemplateField HeaderText="Description"> <EditItemTemplate> <asp:TextBox ID="TextBoxDescription" runat="server" Text='<%# System.Web.HttpUtility.HtmlEncode(Bind("Description")) %>' ValidationGroup="EditItemGrid" MaxLength="30" /> <asp:Validator ... /> </EditItemTemplate> <ItemTemplate> <asp:Label ID="LabelDescription" runat="server" Text='<%# System.Web.HttpUtility.HtmlEncode(Eval("Description")) %>' /> </ItemTemplate> </asp:TemplateField>
但是,当我尝试这样,我得到以下错误:
CS0103: The name ‘Bind’ does not exist
in the current context
解决方法
现在可以使用ASP.NET 4中引入的新的HTML编码数据绑定语法。
你可以简单地使用:
<%#: Eval("MyField") %>
要么
<%#: Bind("MyField") %>
注意冒号后的磅/哈希标志就像这样简单。