У меня есть веб-формы с аа пару boundfields в окне редактирования следующим образом:Форматирование текста в ASP.Net BoundField
<asp:BoundField DataField="TS_TITLE" HeaderText="Title" SortExpression="TS_TITLE" HeaderStyle-VerticalAlign="Top" HtmlEncode="True" >
<ControlStyle Width="500px" />
</asp:BoundField>
<custom:BoundTextBoxField DataField="TS_DESCRIPTION" HeaderText="Desription" HeaderStyle-VerticalAlign="Top" SortExpression="TS_DESCRIPTION"
TextMode="MultiLine" Rows="20" Columns="100" Wrap="True" HtmlEncode="True" />
Я использую свойство Html Encode в BoundField, чтобы защитить от кросс- атаки сценариев сайта. Я хотел бы сделать это, когда пользователь снова откроет окно редактирования, я хочу, чтобы кодированный html был декодирован и представлен, html-теги и все. Моя проблема заключается в том, что когда я пытаюсь декодировать html в коде, под функцией Page_Load, он не устанавливается, когда страница представляется пользователю, то есть она не действует. Вот фрагмент кода из Page_Load:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim dvrTest As DetailsViewRowCollection = DetailsView1.Rows
Dim DescriptionTB As TextBox = dvrTest.Item(1).Cells(1).Controls(0)
DescriptionTB.Text = HttpUtility.HtmlDecode(DescriptionTB.Text)
End Sub 'Page_Load
При отладке я могу увидеть HTML декодируется текст, как это должно выглядеть, я думаю, что есть дополнительный DataBind, что происходит после того, как Page_Load выходов, сбрасывающие BoundTextBoxField. Просто примечание, я проверил это как на BoundField, так и на BoundTextBoxField, и эффект одинаковый для обоих.
У меня была аналогичная проблема с выпадающим списком, который я использую в другой части моего приложения, только там я использовал событие onLoad для вызова функции для манипуляции данными после загрузки страницы и привязки данных. К сожалению, Boundfield, похоже, не имеет этого события, ближайшая вещь, которую я нашел, это свойство DataFormatString, но это только кажется полезным при работе с датами и валютой.
UPDATE:
В случае, если кто задавался вопросом, даже с HTMLEncode набор свойств к ложным, я получаю кодированный текст, когда окно редактирования перезагружается.
UPDATE 2:
Пробовал переопределение метода OnDataBinding, но это, похоже, не делать ничего.
Protected Overrides Sub OnDataBinding(ByVal e As System.EventArgs)
Me.OnDataBinding(e)
Dim dvrTest As DetailsViewRowCollection = DetailsView1.Rows
Dim DescriptionTB As TextBox = dvrTest.Item(1).Cells(1).Controls(0)
DescriptionTB.Text = HttpUtility.HtmlDecode(DescriptionTB.Text)
End Sub