2011-02-22 42 views
0

我最近将客户端的网站升级到了.NET 4,并且我们在过程中发现现在GridView列值自动被HTML编码。GridView和Html编码

他们在他们的代码中广泛使用HTML字符串,所以我们必须关闭它。我知道一个解决方案会遍历每列,并添加HtmlEncode =“false”。我的问题是 - 是否有办法将此设置为此应用程序中所有GridView列的默认值?

谢谢!

回答

0

我不认为有什么办法可以默认这样做,因为这是默认安全措施,所以开发人员需要考虑关闭它。

要避开它,您需要逐列关闭它,或者您可以从GridView继承一个新控件,并将其设置为默认为false。然后,您可以执行搜索并用您的新控件替换GridView。我不会推荐这种方法。

最好的办法是询问应用程序中的每一列并将其关闭。这是更安全的,它让你真正考虑你想打开的门的HTML/JavaScript注入的可能性。比对不起更安全。

1

我发现这个解决方案来解决这个问题。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
       for (int i = 0; i < e.Row.Cells.Count; i++) 
       { 
        string encoded = e.Row.Cells[i].Text; 
        e.Row.Cells[i].Text = Context.Server.HtmlDecode(encoded); 
       } 
     } 
    } 
+0

我用这个不同的情况下,它的工作..尼斯 – aminvincent