2015-01-06 2 views
0

아래와 같이 Viewstate에 작은 DataSet을 유지하고 업데이트 이유를 알고 싶습니다.Viewstate가 캐스트 obj에 대한 참조로 업데이트 되었습니까?

intId는 메서드에 전달되는 문자열입니다. 일치가 발생하면 DataSet ds에서 행이 삭제되지만 Viewstate도 동시에 업데이트됩니다. 이유에 대해 혼란 스러웠습니다. 참조 문제입니까?

  DataSet ds = (DataSet)ViewState["DataSet"]; 

      foreach (DataRow row in ds.Tables[0].Rows) 
      { 
       var intId = row[0].ToString();     

       if (roleID.ToString() == intId) 
       { 
        row.Delete(); 
       } 
      } 
+0

안녕하세요 http://stackoverflow.com/a/3583585/2177589 BiewState가 참조 형은이며 – OmerBTW

답변

2

ViewStateds 같은 메모리 위치에 대한 참조입니다.

  • 페이지로드
  • 제어 이벤트

사전 렌더링 그럼 ViewState를 직렬화 및베이스 64 인코딩에 저장 (DS 효과의 ViewState의 변화. 이유이다) 끈. 사전 렌더링 이벤트 후 ds의 변경 사항은 더 이상 ViewState에 영향을주지 않습니다.

ViewState에 대한 자세한 내용은 Understanding ASP.NET View State을 참조하십시오.

enter image description here

0

serialize하기 전에 ViewState에는 DataSet 개체에 대한 실제 참조가 포함됩니다. deserialization 후 PostBack에서 DataSet의 새로운 인스턴스입니다.

관련 문제