我最近將客戶端的網站升級到了.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