< 转化为<后保存到数据库,但我现在从数据库读取到TextBox时,我想让它显示为<
< 转化为<后保存到数据库,但我现在从数据库读取到TextBox时,我想让<它显示为<,有什么好一点的方法没? 问题点数:20、回复次数:5Top
1 楼net_lover(【孟子E章】)回复于 2006-06-01 21:01:34 得分 5
Text1.Text = Server.HtmlDecode("<")Top
2 楼celas(长刀公主)回复于 2006-06-02 08:57:26 得分 10
从我个人设计 Web 程序的经验来看, 最好不要这样保存.
数据库层中的数据应当尽量"原汁原味", 忠实于用户的输入, 保证原始数据的一致性和权威性. 显示到 UI 层的时候才做变换. 否则可能出现的问题:
1. html 的处理过滤比较复杂, 除了尖括号之外还有 &, 单双引号的处理等等, 很可能某段 html 字符串可以在 div 中正常显示, 但到了 textarea 或者 textbox 中就走样了, 这样一来为了正常显示, 你有必要再次过滤, 或者反过滤, 然后存储回数据库的时候又要处理, 经过层层过滤, 步骤一多最后得出来的是什么符号可能超出你的预计.
2. 数据库后台有通用性, 你现在的前台是 .NET, 但以后也可能因为需要改成 JSP, PHP, 更有某些网站是同时运行 PHP 和 ASP.NET 的, 这样一来, 每种语言的 html 过滤以及字符串处理函数都有差异, 你的数据经过 ASP.NET 的 HTML 过滤存放如数据库, 那么 PHP 去读的时候就不一定能正确还原.
综上, 数据库中的字段内尽量保证原始. 就好像你用 notepad 编辑一样, 键盘输入了什么字符, 记事本中也存入什么字符, 而不会把 < 存储为 <
Top
3 楼lxmzh21(猫)回复于 2006-06-02 12:26:38 得分 0
长刀MM 同志的观点已阅,深表同意。一般都是显示的时候才进行数据处理。Top
4 楼yunxiao_2004(云崤)回复于 2006-06-02 12:29:40 得分 5
设置validateRequest=false 属性,可以解决<> 的问题
<%@ Page language="c#" Codebehind="TaskDealWithV4.aspx.cs" validateRequest=false AutoEventWireup="false" Inherits="UWayPlatForm.Task.TaskDealWithV4" %>
Top
5 楼abcbsy(伴生缘)回复于 2006-06-02 13:38:42 得分 0
受教了,谢谢celas(长刀MM)!Top




