[英]HTMLEncode and HTMLDecode not working when data is bound to asp:GridView
当编码数据绑定到网格并稍后在rowdatabound
事件上解码时,我对HttpUtility.HTMLEncode
和HttpUtility.HTMLDecode
有一个奇怪的观察。 这是一些背景代码。
数据被编码并绑定到网格视图- 观察HttpUtility.HtmlEncode
的使用
for (var index = 0; index < dtData.Rows.Count; index++)
{
DataRow row = dtData.Rows[index];
row.ItemArray = row.ItemArray.Select(HttpUtility.HtmlEncode).ToArray<object>();
}
DataTable dtEncodedData = dtData;
gview.DataSource = dtEncodedData;
gview.DataBind();
gview.Visible = true;
当我解码 RowDataBound 事件的输入数据时,我没有从编码数据中得到相同的值。 似乎 gridview 也在我正在做的事情之上应用它的编码,所以HTMLDecode
没有给出我正在寻找的东西?
protected void gview_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string decodedText = HttpUtility.HtmlDecode(e.Row.Cells[i].Text);
}
}
输入数据 - Single Quote '
编码后 - Single Quote '
decodedText - Single Quote '
- 观察与输入数据不同
RowDataBound
事件上的e.Row.Cells[i].Text
的值被捕获为Single Quote &#39
这弄乱了我的解码我没有得到Single Quote '
字符串。
我应该找到一种方法来阻止 gridview 对数据进行编码吗? 见解将不胜感激。
试试这个解码,这个是我在 gridview 中使用的,自动生成列为真。 我的 .net 框架是 4.6
你是什么项目框架版本> 尽量保持在4.0以上
e.Row.Cells[i].Text = Context.Server.HtmlDecode(e.Row.Cells[i].Text.ToString());
检查这个小提琴:[https://dotnetfiddle.net/Uppzxi][1]
根据您的输入,它工作正常。
找出“;”在哪里编码中缺少? 并发布代码示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.