2009-12-16 5 views
0

"DialogClosed"라는 공개 이벤트가있는 usercontrol을 만들었습니다.웹 사용자 정의 컨트롤이 포스트 백에서 속성을 잃습니다.

이 사용자 정의 컨트롤에도 버튼이 있습니다. 사용자가 버튼을 클릭하면 배경 코드가 "DialogClosed"이벤트를 발생시킵니다.

문제는 사용자가 단추를 클릭하면 포스트 백이 발생하여 컨트롤의 새 인스턴스가 만들어졌으며 원래 인스턴스가 더 이상 존재하지 않기 때문에 컨트롤이 모든 속성을 잃어 버렸습니다. 나는 이벤트가 발생하면

그래서, 그것은 ("DialogClosed"== null이 있기 때문에)

답변

1

어쩌면 내가 뭔가를 누락 예외가 발생합니다 ...하지만 당신은 단지의 IsPostBack을 속성에 대해 확인하지 못했습니다 페이지를 사용하여 컨트롤을 만들 때 포스트 백에서 컨트롤이 만들어지지 않도록하려면?

또한 어떤 경우에 컨트롤을 만들고 있습니까?

0

컨트롤에 대해 ViewState가 활성화되어 있습니까?

그렇다면 페이지의 초기화 이벤트에서 UserControl을 인스턴스화해야합니다. 그러면 단순히 aspx 태그에서 선언하지 않은 한 속성이 포스트 백에서 유지됩니다.

+0

나는 usercontrol 자체 또는 사용 페이지에서 viewstate를 활성화해야합니까? – Eitan

+0

당신이 말한 .... "문제는 사용자가 버튼을 클릭 한 후 포스트 백이 발생하여 컨트롤의 새 인스턴스가 만들어지고 컨트롤이 그의 모든 속성을 잃어 버렸습니다 ..." 그래서 "MyControl"이 무엇인지에 달려 있습니다. 문제의 속성이 UserControl에 속하면 ViewControl을 사용하도록 UserControl이 필요합니다. UserControl에 대한 사용자 지정 속성 인 경우이 속성이 viewstate를 적절하게 업데이트하는지 확인하십시오. http://stackoverflow.com/questions/1673975/viewstate-as-attribute – George

0

페이지가 다시 게시 된 후에 이벤트 처리기를 다시 바인딩해야합니다. 그러나 viewstate가 활성화되어 있으면 속성을 잃어서는 안됩니다.

관련 문제