代码之家  ›  专栏  ›  技术社区  ›  Vivek Shukla

当数据绑定到asp:asp:GridView时,HTMLEncode和HTMLDecode不工作

  •  0
  • Vivek Shukla  · 技术社区  · 2 年前

    我对 HttpUtility.HTMLEncode HttpUtility.HTMLDecode 当编码数据绑定到网格并稍后在上解码时 rowdatabound 事件这是一些背景代码。

    数据已编码并绑定到网格视图 -遵守的用法 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;
    解码文本- Single Quote &#39 -观察 不是 与输入数据相同

    的值 e.Row.Cells[i].Text 在…上 RowDataBound 事件被捕获为 Single Quote &amp;#39 这把我的解码搞砸了我不明白 单引号' 字符串返回。

    我应该找到一种方法来停止gridview对数据进行编码吗?如有真知灼见,不胜感激。

    0 回复  |  直到 2 年前
        1
  •  0
  •   Sund'er    2 年前

    试试这个解码,这个是我在网格视图中使用的,自动生成列为true。我的.net框架是4.6

    您的项目框架版本是什么> 尽量保持4.0以上

    e.Row.Cells[i].Text = Context.Server.HtmlDecode(e.Row.Cells[i].Text.ToString());
    

    检查这个小提琴:[https://dotnetfiddle.net/Uppzxi][1]

    根据您的意见,它运行良好。

    找出编码中缺少“;”的位置?并发布代码示例。