私はaspコントロール(< asp:Button runat = "server" ID = "btn"/>)を持つUserControlを持っています。aspコントロールを含むUserControlを動的に読み込む方法
私は1を試してみました:
Page loader = new Page();
Control ctrl = loader.LoadControl("WebUserControl1.ascx");
loader.Controls.Add(ctrl);
loader.ProcessRequest(context);
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
loader.RenderControl(htw);
それは=「server」をラナた各コントロールは、フォームになければならないと言うので、それが動作しません。
私はまた2を試してみました:loader.Formがnullであるので、
私はHtmlFormを作成してCtrlキーを追加して、ローダーのコントロールにHtmlFormを追加しましたが、それは2 HtmlFormを持っていることを言います。だから、代わりに私は「注入された」HtmlForm今、エラーが発生しなかった。この
Page loader = new Page();
HtmlForm form = new HtmlForm();
var method = loader.GetType().GetMethod("SetForm", BindingFlags.NonPublic | BindingFlags.Instance);
method.Invoke(loader, new object[] { form });
Control ctrl = loader.LoadControl("WebUserControl1.ascx");
loader.Form.Controls.Add(ctrl);
loader.ProcessRequest(context);
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
loader.RenderControl(htw);
ようローダーに、しかしにStringWriterは
空ではどこに私のミスです。 ページをソリューションに追加してOnRenderを上書きするように教えてください。上記のようにしたいと思います。
は
このコードを2番目のTRYに追加しました。PlaceHolder ph = new PlaceHolder(); ph.Controls.Add(Ctrl); loader.Form.Controls.Add(ph); loader.ProcessRequest(context);しかし、StringWriterはまだ空です – theateist