1

私は動的にページを作成することに関していくつかの問題を抱えていました:

p = New Page();
Page myPage = new Page();
FormAtt ctrl = (FormAtt)myPage.LoadControl("path/to/my/file.ascx");  // here lies the gridview of evil
myPage.Controls.Add(ctrl);

問題は私が受け取ることです

Control ... must be placed inside a form tag with runat=server

VerifyRenderingInServerFormさて、フォームレスページを呼び出せるようにするには、メソッドをオーバーライドする必要があることがわかりました。しかしVerifyRenderingInServerForm、ASPXファイルがないので、どうすればオーバーライドできますか。


ps:関連する質問がありますが、それらは異なる質問であるため、どうすればよいかわかりませんが、解決策は同じ問題になり、最後の解決策をあきらめました-参照:動的に作成されたページでフォームがヌル

4

3 に答える 3

2

すでにオーバーライドしているカスタム クラスを使用することができますVerifyRenderingInServerForm

 public partial class MyCustomPage : System.Web.UI.Page
 {
    public override void VerifyRenderingInServerForm(Control control)
    {         
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        var p = new MyCustomPage();
        FormAtt uc = (FormAtt)p.LoadControl("path/to/my/file.ascx");
        p.Controls.Add(uc);
    }
}
于 2013-02-19T12:38:13.177 に答える
1

前の質問と同様です。最初にHtmlFormを追加する必要があります。ASP.Netでは、ページにコントロールを追加するためにフォームタグが必要です。

Page myPage = new Page();
HtmlForm form = new HtmlForm();
FormAtt ctrl = (FormAtt)myPage.LoadControl("path/to/my/file.ascx");
form.Controls.Add(ctrl);
myPage.Controls.Add(form);
于 2013-02-19T15:54:05.227 に答える