从动态内容返回
本文关键字:返回 动态 | 更新日期: 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();
}