我在页面的CS文件中包含以下代码,我试图在服务器端的div内添加html按钮以关闭警报模式对话框。 当我将事件添加到按钮并尝试触发它时。该事件不会触发。 那么,问题出在哪里?
public Alert(HtmlGenericControl alert ,string alertMessage)
{
vAlert = alert;
alert.Attributes.Add("class", "uk-modal");
alert.Attributes.Add("aria-hidden", "true");
alert.Attributes.Add("style", "display: none; overflow-y: scroll;");
HtmlGenericControl innerDiv = new HtmlGenericControl();
innerDiv.TagName = "div";
innerDiv.Attributes.Add("class", "uk-modal-dialog");
innerDiv.Attributes.Add("style", "top: 35.5px;text-align:center; padding:30px;");
HtmlInputButton btnclose = new HtmlInputButton();
btnclose.Attributes.Add("type", "button");
btnclose.Attributes.Add("id", "alert_close");
btnclose.Attributes.Add("runat", "server");
btnclose.Attributes.Add("class", "uk-modal-close uk-close");
btnclose.Attributes.Add("style", "padding:15px;");
btnclose.ServerClick += new EventHandler(btnclose_ServerClick);
innerDiv.Controls.Add(btnclose);
HtmlGenericControl p = new HtmlGenericControl();
p.TagName = "p";
p.InnerText = alertMessage;
innerDiv.Controls.Add(p);
alert.Controls.Add(innerDiv);
ShowAlert(alert);
}
private void btnclose_ServerClick(object sender, EventArgs e)
{
HideAlert(vAlert);
}
你能帮我吗?
答案 0 :(得分:2)
在执行服务器回调时,该按钮可能不存在。
您正在使用动态创建的按钮。为了使其能够触发服务器端方法,需要添加按钮,并在页面生命周期的早期阶段绑定事件处理程序,例如On_Init。
我们不知道您何时调用“警报”方法,但这可能为时已晚。还需要在每次回发中调用它-否则当按钮导致回发时,按钮和处理程序之间的链接将不存在。