GridView向TextBox传值出现HTML编码转义,求服务端解码方法
问题解决:GridView传递文本到TextBox时的HTML编码问题
问题描述
将文本从GridView传递到TextBox时,单引号显示为',空格显示为 。原因是GridView的BoundField默认会对内容进行HTML编码,导致获取Cells.Text时得到的是编码后的字符串。
解决方案
使用ASP.NET内置的HTML解码方法即可还原正常文本,无需手动替换字符。推荐以下两种服务端方法:
- Server.HtmlDecode(Web Forms页面直接可用,依赖
System.Web.UI.Page) - HttpUtility.HtmlDecode(通用方法,需引用
System.Web命名空间)
修改后的代码
把获取GridView内容的代码调整为:
for (int i = 0; i < GridView1.Rows.Count; i++) { // 用Server.HtmlDecode解码 string decodedText = Server.HtmlDecode(GridView1.Rows[i].Cells[1].Text); TextBox2.Text += decodedText; // 或者用HttpUtility.HtmlDecode(需添加using System.Web;) // string decodedText = HttpUtility.HtmlDecode(GridView1.Rows[i].Cells[1].Text); // TextBox2.Text += decodedText; }
补充说明
- 你之前尝试的
HtmlEncode是编码方法,作用是将正常文本转为HTML实体,和需求完全相反,因此无法解决问题;而HtmlDecode是解码方法,能把'、 这类HTML实体还原为对应字符。 - 若想从根源避免编码,可修改GridView的BoundField配置,设置
HtmlEncode="False":
<asp:BoundField AccessibleHeaderText="h2" HeaderText="h2" HtmlEncode="False" />
这种方式绑定数据时不会自动编码,直接获取Cells.Text就是原始文本,但需注意XSS安全风险——如果文本来自用户输入,不建议关闭编码。
内容的提问来源于stack exchange,提问作者user20465780
相关产品推荐
相关产品推荐

