Tôi có một GridView ràng buộc với một ObjectDataSource. Tôi cũng có hỗ trợ chỉnh sửa, hoạt động tốt. Tuy nhiên, tôi muốn văn bản HtmlEncode an toàn được hiển thị khi chúng tôi cho phép các ký tự đặc biệt trong một số trường nhất định. Đây là một cinch để làm với BoundFields tiêu chuẩn, vì tôi chỉ cần thiết lập HtmlEncode thành true.Cách sử dụng HtmlEncode với TemplateFields, Data Binding và GridView
Nhưng để thiết lập kiểm soát xác thực, bạn cần sử dụng TemplateFields thay thế. Làm cách nào để dễ dàng thêm HtmlEncoding vào đầu ra theo cách này? Đây là một dự án ASP.NET 2.0, vì vậy tôi đang sử dụng các phím tắt ràng buộc dữ liệu mới hơn (ví dụ: Eval
và Bind
).
Những gì tôi muốn làm là một cái gì đó như sau:
<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>
Tuy nhiên, khi tôi thử nó theo cách này, tôi nhận được lỗi sau:
CS0103: The name 'Bind' does not exist in the current context
Để xử lý khi Mô tả là NULL trong đó quá trình truyền sẽ gây ra sự cố, hãy xem xét sử dụng phương thức ToString(): HtmlEncode (Eval ("Description"). ToString()) –