繁体   English   中英

数据绑定到asp时HTMLEncode和HTMLDecode不起作用:GridView

[英]HTMLEncode and HTMLDecode not working when data is bound to asp:GridView

当编码数据绑定到网格并稍后在rowdatabound事件上解码时,我对HttpUtility.HTMLEncodeHttpUtility.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 &#39;
decodedText - Single Quote &#39 - 观察与输入数据不同

RowDataBound事件上的e.Row.Cells[i].Text的值被捕获为Single Quote &amp;#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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM