c# - html输入按钮服务器点击事件不触发
问题描述
我在页面的 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);
}
你能帮助我吗 ?
解决方案
执行服务器回调时,该按钮可能不存在。
您正在使用动态创建的按钮。为了能够触发服务器端方法,需要在页面生命周期的早期添加按钮并绑定其事件处理程序,例如 On_Init。
我们不知道您何时调用“警报”方法,但可能为时已晚。还需要在每次回发时调用它——否则当按钮导致回发时,按钮和处理程序之间的链接将不存在。
推荐阅读
- javascript - React history.push 正在更新 url 但无法加载所需的组件
- elasticsearch - 在elasticsearch中导入json文件时,Elasticdump创建一个包含1000个字段的文档
- r - 在 R boxplot ggplot2 中对特定 X 变量进行着色
- regex - 正则表达式查找标签
- google-cloud-platform - Gmail API 是否会发送阅读邮件的时间?
- kubernetes - 用于托管在 kubernetes 内的后端的清漆
- python - 如何在反向 shell 中继续执行命令?
- awk - 如果条件匹配,则行中的所有标题名称
- spring-boot - 此应用程序没有 /error 的显式映射,因此您将其视为后备 404 Not found
- amazon-web-services - aws.config.update() 未更新 AWS 凭证