2010-01-31 3 views
4

사용자 정의 컨트롤에 레이블이 있습니다. 마스터 페이지에서 사용자 컨트롤을 삭제했습니다. 다른 .aspx 페이지에 사용자 정의 컨트롤이있는 마스터 페이지를 사용하고 있습니다.사용자 정의 컨트롤에서 레이블 텍스트를 변경하는 가장 좋은 방법은 무엇입니까?

.aspx 페이지에서 사용자 정의 컨트롤의 해당 레이블 텍스트를 변경하는 가장 좋은 방법은 무엇입니까?

답변

5

두 가지 옵션이 있지만 가장 좋은 방법은 레이블의 텍스트 속성을 래핑하고 사용자가 레이블 Text 속성에 할당하는 값을 전달할 수있는 메서드를 만드는 것입니다 .

그런 다음 문자열 매개 변수를 허용하는 다른 방법을 마스터 페이지에서 만들고 해당 값을 사용자 정의 컨트롤의 메서드에 전달합니다. 그런 다음 웹 양식에서 마스터 페이지에이 메서드를 호출 할 수 있습니다. 사용자 정의 컨트롤에 따라서

이 같은 방법을 추가

Public Sub SetDisplayText(ByVal displayText As String) 
    SomeLabel.Text = displayText 
End Sub 

다음과 같이 당신의 마스터 페이지에 메서드를 추가

Public Sub SetDisplayText(ByVal displayText As String) 
    SomeUserControl.SetDisplayText(displayText) 
End Sub 

이제 웹 양식이 SetDisplayText 방법에 호출 할 수 있습니다 마스터 페이지에서 사용자 정의 컨트롤 레이블에 텍스트를 설정하십시오.

Dim masterPage As SomeMasterPage = TryCast(Me.Master, SomeMasterPage) 

If masterPage IsNot Nothing Then 
    masterPage.SetDisplayText("foo") 
End If 

잔인한 느낌이 들지만, 이런 종류의 추상화는 컴포넌트 간의 결합을 줄이기 위해 필요합니다. 이 접근 방식은 다른 구성 요소에 영향을주지 않고 변경이 가능하므로 많은 유연성을 제공합니다. 예를 들어, 레이블 컨트롤의 이름을 바꾸면 웹 폼이 라벨의 이름을 알지 못하거나 (또는주의) 표시 값을 설정하는 방법만으로 텍스트 값을 설정하는 웹 양식을 변경할 필요가 없습니다.

관련 문제