Как уже объяснил Дарин Димитров, вы не можете использовать Bind
в качестве параметра функции. Так что Text='<%# System.Web.HttpUtility.HtmlEncode(Bind("Description")) %>'
невозможно. С другой стороны, здесь обычно нет необходимости использовать HtmlEncode, потому что вы будете использовать Bind
с элементом управления, который позволяет изменять данные, например, вместе с TextBox (как в примере с вашим EditItemTemplate). Но TextBox кодирует автоматически, поэтому вы можете безопасно вызывать Bind
без необходимости использования HtmlEncode:
<EditItemTemplate>
<asp:TextBox ID="TextBoxDescription" runat="server"
Text='<%# Bind("Description") %>'
ValidationGroup="EditItemGrid"
MaxLength="30" />
<asp:Validator ... />
</EditItemTemplate>
Если TextBox не будет кодировать автоматически с использованием Bind
, это будет огромной дырой в безопасности (если только вы не абсолютно уверены, что ваши данные в безопасности для отображения в HTML без кодирования).
Но, например, автоматическое кодирование НЕ относится к метке. Хотя вы также можете использовать Bind
в свойстве «Текст» метки, вывод на метку НЕ кодируется автоматически - причина, по которой использование Bind
с меткой не является хорошей практикой, поскольку вы не можете кодировать текст метки с Bind
. Вместо этого используйте Eval
и оберните его в HtmlEncode, как вы это делали в шаблоне ItemTemplate: Text='<%# System.Web.HttpUtility.HtmlEncode((string)Eval("Description")) %>'