2009-03-30 2 views
0

다음 호를 해결할 수있는 좋은 기사를 찾을 수 없으므로 누구나 대답이 있거나 답변에 대한 링크 만 있으면 행복 할 것입니다.ASP.NET UserControls - 어떻게하면 aspx 코드에서 액세스 할 수있는 콘텐츠 필드를 만들 수 있습니까?

의 내가

내가 접두사 UC와 ASCX에 그것을 등록 MyUserControl.ascx

이라는 UserControl을을 만든 가정 해 봅시다 나는 그것에 속성 및 이벤트를 추가하는 UserControl을 방법을 만드는 방법을 알고

<uc:MyUserControl runat="server" id="uc_test" SomeProperty="true"> 
<InnerContent> 
    ... 
    Controls added in here.... 
    <asp:Button runat="server" id="btn_test" Text="Test"> 
    ... 
<InnerContent> 
</uc:MyUserControl> 

.

하지만 어떻게 내 UserControl에서 "InnerContent"필드를 만들 수 있습니까?

내가 단서 그래서 약간의 특정 :

건배

답변

2

당신은 보통 것을 (.ascx) 사용자 컨트롤을하지있을하시기 바랍니다있다. 그래도 완전히 가능합니다. 이것은 주로 코드 파일을 사용하여 빌드하는 사용자 정의 컨트롤에서 수행됩니다. 이를 달성하기 위해, 당신은 당신의 컨트롤 클래스 같은 선언

[ParseChildren(true), PersistChildren(false)] 
public class MyControl : Control, INamingContainer { 

    [PersistenceMode(PersistenceMode.InnerProperty), 
    TemplateContainer(InnerContentTemplate)] 
    public ITemplate InnerContent { get; set; } 

    void CreateChildControls() { 
     InnerContentTemplate temp = new InnerContentTemplate(); 
     InnerContent.InstantiateIn(temp); 
     Controls.Add(temp); 
    } 
} 

public class InnerContentTemplate : Control, INamingContainer { 

} 

.ascx를 들어 파일 대신 UserControl에서 상속 할 수있다.

ASP.NET에서 템플릿을 만드는 것은 다소 복잡한 작업입니다. 답변에서 모든 것을 설명 할 수는 없습니다. 몇 가지 샘플과 문서를 살펴 봐야합니다.

+0

이것은 정확하게 달성하려는 것으로 보이지만 setter 함수의 예를 줄 수 있습니까? 아마도 UserControl? 패널의 패널에 데이터를로드합니까? –

+0

감사합니다. 나는 당신이 말하는 것을 얻었고 그것에 대해 읽을 것입니다. 당신의 도움을 주셔서 감사합니다. –

+0

이것은 나를위한 workign이지만 템플릿에 추가 한 컨트롤을 다시 얻는 방법을 찾지 못하는 것 같습니다. 빠른 힌트가 있으십니까? –

0

리피터 (예 : ItemTemplate 영역과 헤더 및 wotnot이 있음)와 같은 템플릿 컨트롤을 만들고 싶습니다. Here이 그 예입니다.

+0

이 링크를 가져 주셔서 감사합니다! –

0

Merhdad의 회신에 대한 의견은 다음과 같습니다. 이것은 저에게는 효과적이지만 템플릿에 추가 한 컨트롤을 다시 가져 오는 방법을 찾지 못하는 것 같습니다. 이것에 대해 나에게 빠른 힌트를 줘? - 진짜 냅스터 (14 분 전) 시도한 Control.FindControl 방법? - 메흐 다드 (8 분 전) 내가 패널을 액세스하여 템플릿을 찾을 수 있습니다

은 .................. 내가 추가 그것에 .. 같은 뭔가 이 :

pnl_content.Controls[index] 

하지만 난 어떻게 템플릿에서 컨트롤을 얻을 모르겠어요 ..

이 내 코드는 모습입니다 같은 :

<uc:PopupOKCancel ClientInstanceName="pop_createCompany" runat="server" ID="pop_createCompany" OKButtonText="opret" HeaderText="Opret nyt firma"> 
    <ContentTemplate> 
      <uc:CompanyDetails runat="server" id="uc_companyDetails"></uc:CompanyDetails> 
    </ContentTemplate> 
</uc:PopupOKCancel> 

CompanyDetails UserControl 실제로 존재하지 않는 것 .. 그것은 단지 템플릿이 존재하는 것 .. 나는 그들을 설정할 수 있고 그들을 얻을 수 있지만 불가능했다 .. 몇 가지 이유에 대한 템플릿 클래스에 몇 가지 속성을 추가하려고했습니다. .

관련 문제