2010-05-20 5 views
4

usercontrol에서 상위 페이지 값을 가져 오는 방법. 페이지에 사용자 정의 컨트롤이 있습니다. usercontrols 버튼을 클릭하면 메소드를 실행 한 후 페이지에서 일부 값을 가져오고 싶습니다. 내 usercontrol에서 그 값이 필요합니다. 사용자 정의 컨트롤에서 페이지의 결과를 얻는 가장 좋은 방법은 무엇입니까?usercontrol에서 상위 페이지 값 가져 오기

답변

4

원시 방법 : 첫 번째 액세스 페이지 속성 :

http://msdn.microsoft.com/en-us/library/system.web.ui.control.page.aspx

다음 당신은 (그것이 무엇이든) 귀하의 페이지 형식으로 페이지 속성을 시전 할 수 있습니다 또는 당신은 페이지의 값을 찾기 위해 Page.FindControl 방법을 사용할 수 있습니다 다른 컨트롤에서. 이 버튼을 클릭했을 때 좋은 방법으로

http://msdn.microsoft.com/en-us/library/31hxzsdw.aspx

는 이벤트를 노출해야 사용자 컨트롤 해고와 페이지는이 이벤트에 가입하고 제어하는 ​​데이터를 반환해야합니다.

이게 당신이 찾고 있는게 뭡니까?

+1

+1 두 번째 접근 방식. usercontrol이 페이지를 제어해야하기 때문에 이벤트를 발생시키는 usercontrol과 함께하는 것이 가장 좋은 방법입니다. 페이지는 해당 이벤트를 catch하고 사용자 정의 컨트롤에 필요한 정보를 제공해야합니다. 페이지가 컨트롤러이고 usercontrol이보기입니다. 그 외에도 다른 페이지에서 사용자 정의 컨트롤을 사용하면 페이지의 특수 유형으로 캐스팅하는 것이 실패합니다. –

+0

네, UserControl을 사용하는 요지입니다. 어떤 사람들은 불행히도 단축키를 사용하기를 선호합니다 ... –

3

Page 속성을 사용하면 페이지 개체에 대한 참조를 얻을 수 있습니다. 그러나, 참조가 아닌 특정 페이지 클래스의 종류, 그래서 먼저 캐스팅하지 않고 클래스의 특정 멤버에 액세스하는 데 사용할 수 없습니다

MySpecificPageClass page = (MySpecificPageClass)Page; 

지금 액세스에 대한 참조를 사용할 수 있습니다 그 클래스의 public 멤버. 페이지의 컨트롤은 종종 protected로 선언되므로 액세스 수준을 public으로 변경해야 외부에서 액세스 할 수 있습니다.

+0

usercontrol이 여러 페이지 (사용자 콘트롤이 일반적으로 사용되는 것)에 있으면 캐스팅이 실패합니다. 나는 페이지에 대한 이벤트를 발생시키는 usercontrol과 함께 Rafaels의 두 번째 접근 방식을 선호한다. 그런 다음 필요한 정보가 Usercontrol에 대한 참조를 보유하고있는 페이지에서 제공된다. –

+0

@ 팀 : 좋은 지적. 다른 페이지에서 사용하도록 설계된 사용자 컨트롤의 경우 접근 방식은 물론 완전히 다릅니다. – Guffa