2010-05-04 84 views
0

我有一個自定義控件,它在createchildcontrols方法中呈現一些literalcontrols。如以下(有被添加literalcontrols的其它線路,我在這裏沒有uncluded)使用findcontrol在文字控件中查找控件

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

我正在然後嘗試通過在類的頂部添加[ValidationProperty(「myprop」)],以驗證該文本框。 基本上我需要驗證輸入到文本框中的值。該myprop屬性如下

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沒有找到文本框可言,我相信因爲就.NET而言它是一個literalcontrol,一點都沒有

一個文本框,現在肯定我可以改變的CreateChildControls做到這一點

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

因爲對我在做什麼我將不得不改變了很多更多的東西在其他地方的其他限制,但..

是否有無論如何findcontrol控件找到文字框內呈現的文本框或其他方法?

感謝

NAT

回答

0

可惜的FindControl不 找到文本框可言,我相信 因爲就.NET而言 其一個literalcontrol,而不是在所有 文本框

這是正確的。你必須使用一些其他的控件,比如文本框。

+0

但是,沒有辦法控制該clientid雖然在那裏? – nat 2010-05-04 14:44:02

+0

就webform框架而言,文字控件的內容被視爲文本而不是控件。 – 2010-05-04 15:21:51