2011-02-22 10 views
0

最近、クライアントのWebサイトを.NET 4にアップグレードしました。このプロセスで、GridViewの列値が自動的にHTMLエンコードされるようになりました。GridViewとHtmlエンコーディング

彼らはコード内にHTML文字列を広く使用しているため、これをオフにする必要があります。私は1つの解決策が各列に行き、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

関連する問題