2011-02-22 77 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