注意GridView的BoundField列的HtmlEncode操作
今天写一段程序时,由于没有注意到GridView的BoundField字段的HtmlEncode属性而导致郁闷了大半天,特总结如下,与大家一起分享经验。
问题描述:
某一数据库的A表中的a字段中的值为类似"<font color=blue>abc</font>"的html代码段组成的。如下表所示:
ab c<font color=blue>abc</font>..................<font color=red>def</font>..................<em>gef</em>.............................................
A表
用GridView的BoundField(数据绑定字段)显示上述A表中a字段数据内容时,GridView显示效果如下:
ab c<font color=blue>abc</font>..................<font color=red>def</font>..................<em>gef</em>............................................. 从中我们可以发现,A表中a字段中的html代码并未被解析。实际数据库A表中a字段值之所以加入html代码,是为了能让其在GridView显示数据时,应用对应的html代码效果,例如:让abc显示为蓝色字体,def显示为红色字体,gef为斜体。
原因:
经查看显示页面的html源代码,我们发现原来A表中a字段中的html代码段值在通过GridView控件显示到页面时,是经过html编码输出的,例如<font color=blue>abc</font>在页面上输出结果为:<font color=blue>abc</font>
[相关]既然进行HtmlEncode,那么所有HTML元素都会被编码输出,这当然也包含空格-->
解决办法:
经在网络上查找资料得知,原来GridView的BoundField(数据绑定字段)中有一个HtmlEncode属性,如下图所示:

该属性默认值为True,当该值为 True时,该BoundField中所有数据都将经过html编码输出,所以我们只要将GridView中绑定a字段的BoundField的HtmlEncode属性值设置为False,取消该对该字段进行html编码输出,就可以达到我们显示的效果,GridView显示的结果如下:
ab cabc..................def..................gef............................................. 经验总结:
将GridView的BoundField字段的HtmlEncode属性设置为True(默认值为True),可对此字段值进行html编码,可以防止恶意的程序代码。若将HtmlEncode属性设置为False,将取消对此字段值进行html编码。

浙公网安备 33010602011771号