我最近将客户端的网站升级到了.NET 4,并且我们在过程中发现现在GridView列值自动被HTML编码。GridView和Html编码
他们在他们的代码中广泛使用HTML字符串,所以我们必须关闭它。我知道一个解决方案会遍历每列,并添加HtmlEncode =“false”。我的问题是 - 是否有办法将此设置为此应用程序中所有GridView列的默认值?
谢谢!
我最近将客户端的网站升级到了.NET 4,并且我们在过程中发现现在GridView列值自动被HTML编码。GridView和Html编码
他们在他们的代码中广泛使用HTML字符串,所以我们必须关闭它。我知道一个解决方案会遍历每列,并添加HtmlEncode =“false”。我的问题是 - 是否有办法将此设置为此应用程序中所有GridView列的默认值?
谢谢!
我不认为有什么办法可以默认这样做,因为这是默认安全措施,所以开发人员需要考虑关闭它。
要避开它,您需要逐列关闭它,或者您可以从GridView
继承一个新控件,并将其设置为默认为false。然后,您可以执行搜索并用您的新控件替换GridView
。我不会推荐这种方法。
最好的办法是询问应用程序中的每一列并将其关闭。这是更安全的,它让你真正考虑你想打开的门的HTML/JavaScript注入的可能性。比对不起更安全。
这仍然在.NET 4中工作吗? Prevent HTML encoding in auto-generated GridView columns
我发现这个解决方案来解决这个问题。
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);
}
}
}
我用这个不同的情况下,它的工作..尼斯 – aminvincent