快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

网页中用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;

本新闻共2页,当前在第1页  1  2  

本新闻共2页,当前在第1页  1  2  


返回类别: 教程
上一教程: C#中的数组和C++中数组的区别
下一教程: .Net FrameWork SDK文档的例子演示

您可以阅读与"ASP.NET中输入文本的HTML解析办法"相关的教程:
· 如何得到一个汉字和字母组合的字符串的正确的长度(asp.net 版本的)
· asp.net生成HTML
· ASP.NET学习手记:验证用户表单输入
· Asp.net动态生成html页面
· 在ASP.NET中上传图片并生成缩略图的C#源码
    微笑服务 优质保证 索取样品