Tengo un GridView vinculado a un ObjectDataSource. Lo tengo también apoyando la edición, que funciona bien. Sin embargo, me gustaría escribir texto HtmlEncode de forma segura, ya que permitimos caracteres especiales en ciertos campos. Esto es muy fácil de hacer con BoundFields estándar, ya que acabo de establecer HtmlEncode en verdadero.Cómo usar HtmlEncode con TemplateFields, Data Binding y un GridView
Pero para configurar los controles de validación, uno necesita usar TemplateFields en su lugar. ¿Cómo puedo agregar fácilmente HtmlEncoding a la salida de esta manera? Este es un proyecto ASP.NET 2.0, por lo que estoy usando los atajos de enlace de datos más nuevos (por ejemplo, Eval
y Bind
).
Lo que me gustaría hacer es algo como lo siguiente:
<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>
Sin embargo, cuando trato de esta manera, me sale el siguiente error:
CS0103: The name 'Bind' does not exist in the current context
Descripción de manejar cuando es NULL, donde la fundición causará un accidente, puede utilizar el método ToString(): HtmlEncode (. Eval ("Descripción") ToString()) –