0

Panel次のようにコントロールを使用してコンテナーを作成しています。

public class CustomContainer : Panel
{
 public override void RenderBeginTag(HtmlTextWriter writer)
 {
  var control this.Page.LoadControl("web user control path.ascx");
  control.ID = "userControlId";
  control.RenderControl(writer);
  base.RenderBeginTag(writer);
 }
 public void ShowMessage(string message)
 {
  var control = this.FindControl("userControlId"); // control here is null!!
  var custom = control as CustomControl;
  custom.Message = message;
 }
}

レンダリングしたIDでコントロールを見つけようとするとuserControlId、常にnullが返されます! 何が起こっているか知っている人はいますか?この問題を解決するにはどうすればよいですか?

ところで: コード ブロックが含まれていると例外が発生するため、 CustomControlinCreateChildControlsメソッドを追加できません。CustomContainer

コントロールにコード ブロック (つまり <% ... %>) が含まれているため、Controls コレクションを変更できません。

4

1 に答える 1

0

ShowMessageコントロールがレンダリングされる前に呼び出している可能性があります。またはShowMessageの間に電話してみてください。基本的に、.OnPreLoadOnLoadRender

于 2011-10-04T19:30:01.207 に答える