TextMode="MultiLine" Rows="20" Columns="100" Wrap="True" HtmlEncode="True" />
我使用的BoundField的HTML编码性能,以确保对互网站脚本攻击。我想要做的是,当用户重新打开编辑窗口,我想要解码和呈现编码的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解码文本,因为它应该是,我的猜测是,有说在Page_Load退出该复位BoundTextBoxField后发生额外的数据绑定。请注意,我已经在BoundField和BoundTextBoxField上测试了这一点,两者的效果都是相同的。
我有一个类似的问题,我在我的应用程序的另一部分中使用下拉列表,只有在那里我使用onLoad事件来调用一个函数来加载页面和数据绑定后执行数据操作。不幸的是,Boundfield似乎没有这个事件,我发现的最接近的东西是DataFormatString属性,但这只在使用日期和货币时才有用。
UPDATE:
为了防止有人怀疑,甚至与HtmlEncode属性设置为false,我得到的,当编辑窗口重装上阵编码的文本。
更新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