2011-02-22 7 views
0

최근에 클라이언트의 웹 사이트를 .NET 4로 업그레이드했으며 그 과정에서 GridView 열 값이 자동으로 HTML 인코딩된다는 것을 알았습니다.GridView 및 Html 인코딩

그들은 코드에서 HTML 문자열을 광범위하게 사용하므로이 기능을 해제해야합니다. 하나의 솔루션은 각 열 위로 이동하여 HtmlEncode = "false"를 추가합니다. 내 질문은 -이 응용 프로그램에서 모든 GridView 열의 기본값으로 설정하는 방법이 있습니까?

감사합니다.

답변

0

나는 기본적으로 안전 조치로 넣어 개발자가 그것을 해제하는 것을 고려해야 할 필요가 있기 때문에 그것을 기본적으로 할 수있는 방법이 있다고 생각하지 않습니다.

주위를 둘러 보려면 열 단위로 해제해야하거나 GridView에서 새 컨트롤을 상속 받아 각 열을 기본값 인 false로 설정할 수 있습니다. 그런 다음 검색을 수행하고 GridView을 새 컨트롤로 바꿀 수 있습니다. 나는이 방법을 추천하지 않을 것이다.

애플리케이션의 각 열을 조사하고 끄는 것이 가장 좋습니다. 그것은 안전하고 실제로 당신이 HTML/자바 스크립트 주입의 가능성에 대한 문을 열고 싶은 곳을 고려하게합니다. 죄송합니다보다 더 안전.

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