2011-01-10 4 views
1

내 ASP.Net 마스터 페이지에는 가끔 대부분의 페이지에서 액세스해야하는 컨트롤이 있습니다. 지금 대신 내가 컨트롤에 대한 참조를 사용하여 MasterPage에서 속성을 넣어하는 경향이 제어를MasterPage - 속성을 참조하는 단점?

((Label)this.Page.Master.FindControl("lblBreadCrumb")).Text = "foo"; 

액세스하려면이를 사용하는 페이지에서 @MasterType 지시어를 설정하고이 같은 액세스 제어 :

this.Master.BreadCrumb.Text = "foo"; 

나는이 접근법을 사용하는 것이 훨씬 쉽지만 실제로 누군가가 이것을 좋아하는 것을 본 적이 없으므로 내가 누락되었다고 생각하는 이유가 있는지 궁금합니다.

답변

1

몇 가지 이유로 FindControl을 사용하는 것보다 속성을 사용하는 것이 훨씬 더 좋은 생각입니다.이 방법을 사용하게되어 기쁩니다. 속성을 사용하는 가장 중요한 이유는 컨트롤의 이름을 변경하거나 모두 제거한다는 것입니다. 자, 컴파일러 오류가 발생하여 훨씬 쉽게 발견 할 수 있습니다. 예를 들어, lblBreadCrumb의 이름을 바꾸고 FindControl을 사용하는 경우 컴파일러는이 오류를 catch하지 않고 대신 런타임에 응용 프로그램이 실패합니다. 컴파일 타임에 오류를 잡는 것은 언어의 큰 특징입니다.

다른 많은 개발자가이 작업을 수행하는 것을 볼 수없는 이유는 불행히도 좋은 OO 디자인이 거의 Web Forms에서 발견되지 않기 때문입니다.

+0

컴파일 시간 오류가 발생했습니다. 지적 해 주셔서 고마워요, 결코 내 마음을 넘어서지 마세요. – magnattic

1

아니요, 많은 페이지가 액세스하는 좋은 방법입니다.

가끔은 좀 더 추상화 할 수 있습니다. 예를 들어, 단순히 컨트롤에 직접 액세스하는 대신 BreadCrumbText와 같은 마스터 페이지에서 속성을 만들 수 있습니다.

관련 문제