当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET中输入文本的HTML解析办法

ASP.NET
asp.net css注释的影响
ASP.NET与数据库相关技巧
关于HtmlForm控件
三色交替的下拉列表框
精通ASP.NET中弹出窗口技术
ASP.NET Forums与现有系统整合方案示例
ASP.NET操作IIS中的虚拟目录
DataGrid与SQL Server 2000数据绑定
如何让Web应用程序在Client端实现导出报表功能
如何保证web app中的Send Email线程稳定性
关于用ASP.Net识别远程主机服务器种类
ASP.NET中上传下载文件
提高ASP.NET性能的方法
asp.net StreamReader 创建文件
asp.net如何生成图片验证码(简单)
一个.net 压缩位图至JPEG的代码
简单的SQL Server数据库数据读取与数据操作
获取网站的RSS聚合到自己的网页
.Net程序中整站通用的防SQL注入函数
asp.net生成缩略图及给原始图加水印的函数

ASP.NET中输入文本的HTML解析办法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 189 ::
收藏到网摘: n/a

网页中用TextBox让用户输入文本,然后存入数据库,再从数据库中读出显示在页面上。常常这样做会遇到不少问题,因为TextBox实际上是一个Windows组件,和网页显示标记如:<p>,<td>,<div>等,对字符的解析方法是不同的。比如前者的换行标记为“\r\n”,而后者为“<br>”。这就带来一个转换的问题。

  在做转换之前,先来考虑几个问题:

  1、 TextBox用“\r\n”来标记换行而网页中以“<br>”标记

  2、 网页中连续的空格当做一个空格处理,比如“a b    c”将会显示“a b c”

  3、 用户输入特殊字符比如:“<”,“&”,“&nbsp;”,“&lt;”,这些都是网页中有特殊意义的字符,会被解析,而用户输入的目的当然是不希望被解析。

  现在来解决这几个问题,有一种解决办法是在显示的时候仍然用TextBox去显示,这样就不用做任何转换,只要把TextBox.ReadOnly设为true,这样在一定程度上能满足要求。但是往往为了网页的美观,这样做是不可取的。比较好的办法是去解析用户输入的字符串,可以做这样的转换:

  第一步:

 “<”      à“&lt;”

  “&”      à“&amp;”

  “&nbsp;”à“&amp;nbsp;”

  ……(此处的省略号后文有说明)

  第二步:

“ ”      à“&nbsp;”

  “\r\n”  à“<br>”

  这里必须分两步转换,因为如果你先做第二步转换的话混把用户输入的特殊字符串和由转换而的的特殊字符串混淆,比如:

  用户输入:a b   c&nbsp;d

  第二步转换:a&nbsp;b&nbsp;&nbsp;&nbsp;c&nbsp;d

  第一步转换:a&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;d

  可以看到,经过第一次转换后已经无法分辨用户输入的“&nbsp;”和转换而来的“&nbsp;”,在做第二次转换的时候就会统一处理就会出错。结果显示:a&nbsp;b&nbsp;&nbsp;&nbsp;c&nbsp;d

  如果严格按照第一步,第二步的转换顺序来转换就不会出现这个问题。

  把转换后的字符串存入数据库,在显示的时候直接把从数据库读出的字符串给HTML组件赋值,比如:

//这里假设temp是从数据库中读出来的,这里演示Table和HtmlTable其他的控件类似

  //显示的效果是:<a b

  //Table1是Web控件

  String temp = “&lt;a&nbsp;b”;

  Table1.Rows[0].Cells[0].Text = temp;

  //Table2是HTML控件

  Table2.Rows[0].Cells[0].InnerHtml = temp;