asp.net中输入文本的html解析办法

ASP.NET 中的文本块功能解析 本文介绍了C#中实现多行字符串的多种解决方案:1)使用@符号的逐字字符串,保留所有格式但需转义引号;2)ASP.NET Razor视图原生支持多行HTML;3)C# 11新增的原始字符串字面量("""),支持自动缩进和无转义引号。通过对比表格分析了不同方案的特点和适用场景,建议现代项目优先使用原始字符串字面量,传统项目可选用逐字字符串或Razor视图,并提供了JSON、SQL等实际应用示例。文中还比较了C#与Java文本块的功能差异,为开发者提供了清晰的技术选型参考。 阅读详情

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

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

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

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

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

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

  第一步:


   “<”      à“<”
  “&”      à“&”

  “ ”à“&nbsp;”

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


  第二步:


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


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

  用户输入:a b   c d

  第二步转换:a b   c d

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

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

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

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


   //这里假设temp是从数据库中读出来的,这里演示table和htmltable其他的控件类似
  //显示的效果是:<a b

  //table1是web控件

  string temp = “<a b”;

  table1.rows[0].cells[0].text = temp;

  //table2是html控件

  table2.rows[0].cells[0].innerhtml = temp;
 

  htmltable有两个相似的属性“innerhtml”,“innertext”,介绍一下这两个属性的区别:

  innerhtml:显示的时候会对传入的值进行html解析,就像上面的例子。

  innertext:显示的时候不会对传入的值新型解析,直接把传入的值显示出来。比如把上面的例子改成:table2.rows[0].cells[0].innertext = temp;那么显示的效果将会变成:<a b

  虽然这两个属性用起来很方便,似乎可以满足平时的使用需求,但是innertext有两个问题:

  1、 无法标记换行,不管是“/r/n”还是“<br>”都不是换行标记

  2、 连续的空格仍然只显示一个空格。

  所以想不转换字符串而直接用innertext是不可取的。但是转换是个非常繁琐的过程,因为html的特殊标记非常多。值得庆幸的是asp.net提供了httpserverutil类,该类提供了htmlencode()和htmldecode()方法,这里我们只用到htmlencode()方法。我们就可以这样来转换:


   //“/r/n”在textbox中硬回车的时候会自动添上
  string temp = “a b   c d/r/ne<”;

  //server是page类的一个属性,也就是说任何aspx页面的codebehind中都是可以使用的

  //因为aspx页面都是继承page类的。

  temp = server.htmlencode(temp);

  temp = temp.replace(" "," ");

  temp = temp.replace("/r/n","<br>");

  table1.rows[0].cells[0].text = temp;

  table2.rows[0].cells[0].innerhtml = temp;

  //显示效果:a b   c d

  //        e<
 

  到这里你也许会想一个问题,万一用户输入“/r/n”怎么办?不用担心,网页组件的设计者已经考虑到了这个问题,因为用户输入的“/r/n”会被自动转换成“//r//n”(当然在我们做转换之前)。

  大功告成:)

 

保姆级教程:Halcon 3D点云匹配与差异分析避坑指南(从采样到可视化) 本文提供了一份详细的Halcon 3D点云匹配与差异分析实战指南,涵盖从模型准备到可视化的全流程。重点解析了STL文件读取单位误区、点云采样密度优化、表面模型创建技巧以及差异分析的专业手法,帮助用户避开常见陷阱,提升工业检测效率与精度。 阅读详情

相关推荐

⑤单细胞学习-cellchat组间通讯差异分析

参考:

hx2024的博客 1926

ASP.NET输入文本HTML解析办法(pconline)

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

720

2026年5月最新影视泛目录站群程序

2026年5月最新影视泛目录站群程序免费安装使用部分功能收费,免费功能已经超级好用了

Asp.Net实现多行文本,正则表达式验证和禁用页面回车键后多行文本无法换行问题...

Asp.Net实现多行文本,正则表达式验证&lt;asp:TextBox ID="txtDescription" runat="server" Height="82px" MaxLength="500" TextMode="MultiLine"                      Width="501px"&gt;&lt;/asp:TextBox&

Tankywang的专栏 266

整理了一些t-sql技巧

一、 只复制一个表结构,不复制数据 select top 0 * into [t1] from [t2]二、 获取数据库中某个对象的创建脚本1、 先用下面的脚本创建一个函数if exists(select 1 from sysobjects where id=object_id(fgetscript) and objectproperty(id,IsInlin

kingwkb的专栏 1756

【CSS】隐藏多行文本框Textarea在IE中的垂直滚动条

在《【CSS】禁止Google浏览器允许定义调整多行文本框》(点击打开链接)中已经提及过如何使多行文本框Textarea在一些DOM2的浏览器中固定下来。 这不,多行文本框Textarea在IE中也存在一些样式上的缺陷了。 一个普通的,没有加任何定义的文本框,如下: 其在IE的效果就如同左侧一样,在没有输入任何文字,就出现垂直滚动条很不雅观,尤其是在一些不打算给用户输入过多文本的情况下

编程记录,亲测有效 3887

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

ASP.NET中用户输入文本HTML解析办法   网页中用TextBox让用户输入文本,然后存入数据库,再从数据库中读出显示在页面上。常常这样做会遇到不少问题,因为TextBox实际上是一个Windows组件,和网页显示标记如:,,等,对字符的解析方法是不同的。比如前者的换行标记为“/r/n”,而后者为“”。这就带来一个转换的问题。    在做转换之前,先来考虑几个问题:1、 Tex

zhlmmc的专栏 1252

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

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

jiefangchen的专栏 480

asp中如何输入html,ASP.NET输入文本HTML解析办法

HtmlTable有两个相似的属性“InnerHtml”,“InnerText”,介绍一下这两个属性的区别:InnerHtml:显示的时候会对传入的值进行HTML解析,就像上面的例子。InnerText:显示的时候不会对传入的值新型解析,直接把传入的值显示出来。比如把上面的例子改成:Table2.Rows[0].Cells[0].InnerText = temp;那么显示的效果将会变成:<a...

weixin_32808853的博客 279

ASP.NET中用户输入文本HTML解析办法(转载)

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

.net 学习专栏 1678

ASP.NET中用户输入文本HTML解析办法[转]

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

Midweek的专栏 341

asp html文本转化,如何获得ASP文本框的值转换成HTML input标签

你想做什么不是很清楚,所以我会提供2个选项。而asp:TextBox和input type="text"在HTML中是一样的。查看页面源代码并亲自查看。首先使用OnTextChanged事件将值从AddressTextBox改为txtAutocomplete。为了这个工作,你将不得不使txtAutocomplete一个aspnet文本框。然后在后面的代码protected void fillAdd...

weixin_29959549的博客 273

web开发:形变、表格及多行文本操作

一、2d形变 二、动画 三、表格 四、多个文本垂直居中 五、小米形变案例 一、2d形变 /*1.形变参考点: 三轴交界点*/transform-origin: x轴坐标 y轴坐标; /*2.旋转 rotate deg*/transform: rotate(720deg); /*偏移 translate px*/transform: translateX(200px) tran...

weixin_30247781的博客 194

asp.net解析html,,Asp.Net HTML 解析类库

1、HtmlAgilityPackHtmlAgilityPack是.net下的一个HTML解析类库。支持用XPath来解析HTML。这个意义不小,为什么呢?因为对于页面上的元素的xpath某些强大的浏览器能够直接获取得到,并不需要手动写。节约了大半写正则表达式的时间,当然正则表达式有时候在进一步获取的时候还需要写,但是通过xpath解析之后,正则表达式已经要匹配的范围已经非常小了。而且,不用正则表...

weixin_29584723的博客 499

asp.net过滤html,Asp.Net中过滤所有的Html标签

今天在制作一个显示文章列表的页面,从数据库中读出文章标题及部分内容显示到页面上,可以让读者在列表中就可以了解到该文章的大概。完成后却发现了一个问题,就是在翻页后有些页面显示的不完整了,或者页面布局全变乱了,但有几页却没有。查看有问题页面的源代码,发现原来是因为文章内容中包含了HTML代码,然后我在读取部分内容的时候就简单的在数据库中用了left函数,所以导致读出了未封闭的HTML标签了,显示到页面...

weixin_39636253的博客 298

asp.net 读取mysql_asp.net读取数据库

有的网友说,不会C#,在ASP.NET里面还是选择VB.NET,这个我不反对,但是我觉得既然是学习新的东西,就不要在意有多少是新的。实际上C#就一般的操作来说,只是区分大小写和多了一个分号这两点与VB.NET不同其他都差不多啊。在ASP里面我们读取数据就直接用RECORDSET,然后在HTML代码里面穿插就可以显示了,但是ASP.NET讲究的是代码分离,如果还是这样显示数据就不能代码分离了。所以我...

weixin_42511602的博客 359

asp.net 解析html,ASP.NET技巧:请求网址并解析返回的html

目的,把远程服务器传回的html解析到类里面,为gridview等提供数据源1 、向远程服务器post数据public int postdata(string url, string data, out string info){info = "";cookiecontainer cc = new cookiecontainer();httpwebrequest request = webreq...

weixin_36376879的博客 506

ASP.NET中控件的innerHTML与innerText属性一些笔记

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34334744的博客 1084
上一篇: 中式vc变形记
下一篇: asp互动视频教程:asp是什么?
Labber
博客等级 码龄19年 26粉丝 1976原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值