从动态内容返回

本文关键字:返回 动态 | 更新日期: 2023-09-27 18:20:35

我正在使用HtmlGenericControl()在WebForms页面上动态构建一些HTML内容。

HtmlGenericControl p = new HtmlGenericControl("p");
// ...
ListItems.Controls.Add(p);

但现在我需要在上面创建的段落中添加一个按钮,并且该按钮需要在单击时进行回发。

我必须完全重新编写这段代码来加载子控件吗?子控件可以包含真正的服务器端按钮?或者有没有一种方法可以注入能够进行某种类型回发的按钮?

从动态内容返回

这里有一个测试方法和测试EventHandler,如果调用它,它将向ListItems添加一个带有服务器端Click事件的按钮控件。如果InnerHtml可用,注释掉的代码将更改ListItems对象的标记,但我重新考虑了这种方法,并假设页面上存在一个文本框,可以显示点击事件触发的结果。如果你需要这些子控件从一个回发到另一个,那么你需要处理很多问题——例如,如果不是每次加载页面都调用Test(),那么就不会创建该按钮,并且除非其他控件也调用它,否则就无法调用其EventHandler。

      public void Test()
    {
        System.Web.UI.HtmlControls.HtmlGenericControl p = new System.Web.UI.HtmlControls.HtmlGenericControl("p");
        p.InnerHtml = @"<strong>Test</strong>";
        // ...
        ListItems.Controls.Add(p);
        Button b = new Button();
        b.ID = "cmdTest";
        b.Text = "Test";
        b.Click += new EventHandler(test_Click);
        p.Controls.Add(b);
    }
    protected void test_Click(object sender, EventArgs e)
    {
       // ListItems.InnerHtml = "Test button clicked";
        txtTestResults.Text = "Test button clicked at " + DateTime.Now.ToShortTimeString();
    }
相关文章: