2011-12-14 3 views
2

System.Web.UI.UserControl에서 상속받은 추상 UserControlBase 클래스가 있습니다. 마크 업이없는 유일한 클래스입니다. 왜냐하면 나는 추상적 인 기본 클래스이기 때문입니다.ASP.NET - 상위 추상 usercontrol 컨트롤을 정의하지만 어린이 마크 업은 무엇입니까?

이 추상 기본 클래스에서 TextBoxes, DropDownLists 등과 같은 컨트롤을 어떻게 든 정의 할 수 있습니다. 메소드에서 사용하지만, UserControlBase에서 상속 된 children 's usercontrol에 태그 정의를 사용할 수 있습니까?

의사 코드 :

abstract UserControlBase : System.Web.UI.UserControl 
{ 
    private TextBox txt1; 
    private DropDownList ddl1; 

    private void test() 
    { 
      txt1.Text = "test"; 
      ddl1.SelectedIndex = 0; 
    } 
} 

MyUserControl : UserControlBase 
(markup): 

<asp:TextBox ID="txt1" runat="server" /> 
<asp:DropDownList ID="ddl1" runat="server" /> 

감사합니다.

protected TextBox txt1; 
protected DropDownList ddl1; 

이 또한 내가 (단일 * .cs 파일에는 마크 업을) 당신의 UserControlBase 간단한 클래스입니다 제안하지 :

답변

2

그냥 기본 클래스의 컨트롤 개인되지 보호합니다.

+0

오, 예, 내 잘못입니다. 개인적으로 보호해야합니다. UserControlBase는 단순 클래스 (.cs)입니다. 마크 업에있는 컨트롤이 MyUserControl.designer.cs 클래스에 자체 정의를 만들기 때문에 상위 기본 클래스에 정의 된 컨트롤을 태그에있는 컨트롤과 조인하는 방법을 다루고 있습니다. 나는 그것을 손으로 지울 수는 있지만, MyUserControl 마크 업을 업데이트 할 때마다 그것을하고 싶지 않습니다. –

+2

자, 다음은 UserControlBase에 정의 된 컨트롤 정의를 MyUserControl이 만들지 않도록하기위한 단계입니다. 1. 새 사용자 정의 컨트롤을 만듭니다. 2. * .cs 파일에서 부모를 UserControl에서 UserControlBase로 변경하십시오. 3. 마크 업에 새 TextBox를 추가하고 ID를 txt1로 설정합니다. 4. * .designer.cs를 저장/빌드하고 살펴 봅니다 - txt1에 대한 정의를 포함하지 않습니다. – mayor

+0

고맙습니다. –

관련 문제