2013-10-31 8 views
0

마스터 페이지를 만들고 콘텐츠 페이지에서 일부 서버 컨트롤을 마스터 페이지에로드했습니다.콘텐츠 페이지에서 동적으로로드 된 마스터 페이지의 서버 컨트롤에 액세스하는 방법은 무엇입니까?

Control ctrl = Page.ParseControl(result); 
ContentPlaceHolder cph = (ContentPlaceHolder)this.Page.Master.FindControl("ContentPlaceHolder1"); 
      cph.Controls.Add(ctrl); 

이제 콘텐츠 페이지의 컨트롤 페이지에 액세스해야합니다. 그러나 지정된 ID는 컨트롤을 구문 분석 한 후에 변경됩니다. 아래 보이는 것 같습니다.

<input type="submit" name="ctl00$ContentPlaceHolder1$reset" value="reset" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$ContentPlaceHolder1$reset&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="ctl00_ContentPlaceHolder1_reset" /> 

콘텐츠 페이지에서 어떻게 이러한 컨트롤에 액세스 할 수 있습니까?

+0

클라이언트 코드에서 액세스 하시겠습니까? (자바 스크립트) –

+0

콘텐츠 페이지 서버 쪽에서 액세스하려고합니다. –

+0

컨트롤이 항상 동적으로 추가됩니까? – dgarbacz

답변

0

또한 컨트롤이 당신을 위해 일하는 나중에

Control ctrl = Page.ParseControl(result); 
ctrl.ID="ContentPlaceHolder1_reset"; 
ContentPlaceHolder cph = (ContentPlaceHolder)this.Page.Master.FindControl("ContentPlaceHolder1"); 
cph.Controls.Add(ctrl); 

희망을 찾기 위해 마스터 페이지에 컨트롤을 추가하기 전에 ID를 제공해야합니다.

업데이트 : 나는 당신의 마스터 페이지 (10) 텍스트 상자를 추가 해요 여기

for (int i = 1; i < 11; i++) 
    { 
     TextBox t1 = new TextBox(); 
     t1.ID = "TextBox" + i; 
     ContentPlaceHolder cph = (ContentPlaceHolder)this.Page.Master.FindControl("ContentPlaceHolder1"); 
     cph.Controls.Add(t1); 
    } 

을 다음과 같이

당신이 텍스트 상자의 목록을 추가하는 경우에, 당신은 텍스트 상자에 ID를 제공 할 수 있습니다.

+0

결과는 단일 서버 컨트롤이 아니지만 서버 컨트롤 목록을 포함합니다.이 모든 클라이언트 ID를 어떻게 지정할 수 있습니까? –

+0

은 텍스트 상자를 추가하는 모든 컨트롤이며 마스터 페이지에 추가 할 고정 된 컨트롤 수가 있습니까? –

+0

이 답변을 변경했습니다. 시도해보십시오. –