2010-05-04 5 views
0

나는 createchildcontrols 메서드에서 여러 가지 리터럴 컨트롤을 렌더링하는 사용자 정의 컨트롤을 사용합니다. 아래와 같이 그때 클래스의 상단에 [ValidationProperty ("myprop을")]에 추가로이 텍스트 박스를 확인하는 시도하고findcontrol을 사용하여 리터럴 콘트롤 내에서 컨트롤 찾기

this.Controls.Add(new LiteralControl(string.Format("<input type=\"text\" style=\"display:none\" value=\"{0}\" id=\"{1}\" name=\"{1}\" />", MediaId.ToString(), this.UniqueID))); 

(literalcontrols 다른 라인 여기 uncluded되지 않았다고 추가되고있다) . 기본적으로 텍스트 상자에 입력 된 값에 대해 유효성을 검사해야합니다.

public string myprop 
    { 
     get 
     { 
      Control ctrl = this.FindControl(this.UniqueID); 
      string txt = ((TextBox)ctrl).Text; 

      try 
      { 
       MediaId = Convert.ToInt32(txt); 
      } 
      catch { MediaId = 0; } 
      return txt; 
     } 
    } 

불행하게도의 FindControl 전혀 텍스트 상자를 찾을 수없는 다음과 같이 myprop 속성은 내가 가정, 때문에 지금까지 .NET은 확실히 지금 그것 literalcontrol, 모든

에서가 아니라 텍스트 상자에 관한 한 나는이

 TextBox tb = new TextBox(); 
     tb.Text = this.MediaId.ToString(); 
     tb.ID = this.UniqueID; 
     this.Controls.Add(tb); 

하지만 때문에 내가 다른 곳에서 많은 더 많은 물건을 변경해야 할 것 뭐하는 거지의 다른 제한의

..

을 수행 할을 CreateChildControls을 변화시킬 수

findcontrol을 사용하여 리터럴 또는 다른 방법으로 렌더링 된 텍스트 상자를 찾는 방법이 있습니까?

감사

NAT 불행히도의 FindControl 전혀 텍스트 상자를 찾을 수 없습니다 않습니다

답변

0

, 나는 가정 까지 그물이 모든 에서 자사가 literalcontrol 아닌 텍스트 상자에 관한 한 때문에

맞습니다. 텍스트 상자와 같은 다른 컨트롤을 사용해야합니다.

+0

하지만 거기에 있지만 그 clientid를 제어 할 수있는 방법이 무엇입니까? – nat

+0

webform 프레임 워크와 관련하여 리터럴 컨트롤의 내용은 텍스트가 아닌 컨트롤로 처리됩니다. –

관련 문제