FineUI 官方论坛

标题: 项目测试中,一个关于grid的显示html代码问题 [打印本页]

作者: TiDi    时间: 2012-5-21 10:51
标题: 项目测试中,一个关于grid的显示html代码问题
在做的项目进入测试流程了,不过测试人员好BT,竟然在输入里敲html代码,还好数据在textbook保存显示什么的完全没问题,但是返回grid列表就出问题了,BoundField对html甚至是<>符号相当敏感,整个就是不显示了(如果输入'<dddd',就啥都不显示),请问这个有什么好的解决办法吗?
作者: TiDi    时间: 2012-5-23 16:31
没人帮我看一下哦
作者: support    时间: 2012-5-23 21:52
TiDi 发表于 2012-5-23 16:31
没人帮我看一下哦

目前ExtAspNet的Grid不会对字段内容进行HTML编码,因此如果出现这样的情况,你可能需要转换成模板列,然后使用 Server.HtmlDecode 来编码数据库字段后显示。
作者: support    时间: 2012-5-23 22:38
或者你可以自己下载源代码编译一下:77790

将来发布的v3.1.7会包含这个特性:

+为Grid的BoundField、HyperLinkField、LinkButtonField、WindowField增加HtmlEncode和HtmlEncodeFormatString(TiDi)。

作者: TiDi    时间: 2012-5-24 15:13
support 发表于 2012-5-23 22:38
或者你可以自己下载源代码编译一下:77790

将来发布的v3.1.7会包含这个特性:

非常感谢,我下来编译试试。
作者: ☆幻~精灵    时间: 2012-5-24 16:31
顶……
作者: 松松工作室    时间: 2012-5-24 22:28
本帖最后由 松松工作室 于 2012-5-24 22:36 编辑

我们的项目测试时也是很BT的,测试人员会输入各种特殊字符甚至转义字符如& #62;等等,这个问题也曾经让我们开发人员很头疼,一般我们采用三种方式进行处理。
1.将输入的特殊字符进行过滤,比如将<替换为空字符
2.将特殊字符转成全角字符比如将<转换成<
3.将输入编码成转义字符存到数据库(比如&转换为& #38;),读取数据时再进行解码转换。(这是我们现在用的方法)注意编码顺序,要把&转换放在编码的第一行。这种方法也是最遵循用户输入原意的方式,前面两种都是改变了用户的原意。另外注意下拉列表的解析,搞不好会出错的。这个方法已经在我们的项目中很成熟。
综上,如果单纯的改变前端编码转换,很有可能带来其他的问题,比如输入是段JS代码,前台编码后就执行了,这是相当危险的。因此最好的解决方案就是双向的,存入数据库时编码,读取时解码,原样输出。
以上是我们开发时积累的经验,如果有好的解决方案欢迎讨论。
晕:这个编辑器也把我输入的转义字符解释了。。。。加粗部分我加入了空格。

作者: 松松工作室    时间: 2012-5-24 22:39
PS:像百度之类的网站,也未对转义字符进行特殊处理,如下图
[attach]546[/attach]
[attach]547[/attach]

作者: TiDi    时间: 2012-5-27 22:19
松松工作室 发表于 2012-5-24 22:39
PS:像百度之类的网站,也未对转义字符进行特殊处理,如下图

这种处理方式有个不到位的地方,就是会漏掉一些符号,而且后期处理的时候相当的麻烦,所有用到的地方都要做转码处理,其实现在只要绑定控件支持html编码就足以解决所有的问题了,就像ext:label那样。ext:textbox能完完整整的显示你所输入的东西,当然到了数据库层面,唯独",?%"这些特殊字符是必须处理的。
作者: TiDi    时间: 2012-5-27 22:20
还是谢谢松松工作室提出的处理办法。
作者: 小鸡飞过海    时间: 2012-10-23 07:51
3.1.9了这个问题还没修复,加了HtmlEncode无效




欢迎光临 FineUI 官方论坛 (https://www.fineui.com/bbs/) Powered by Discuz! X3.4