html输入按钮服务器单击事件未触发

时间:2018-09-19 11:29:14

标签: c# html asp.net

我在页面的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);
        }

你能帮我吗?

1 个答案:

答案 0 :(得分:2)

在执行服务器回调时,该按钮可能不存在。

您正在使用动态创建的按钮。为了使其能够触发服务器端方法,需要添加按钮,并在页面生命周期的早期阶段绑定事件处理程序,例如On_Init。

我们不知道您何时调用“警报”方法,但这可能为时已晚。还需要在每次回发中调用它-否则当按钮导致回发时,按钮和处理程序之间的链接将不存在。