【问题标题】:Newly added button doesn't work in asp新添加的按钮在asp中不起作用
【发布时间】:2016-12-14 13:07:04
【问题描述】:

我在这里使用的是 Web 表单而不是 MVC,而且我很难找到将 OnClick 绑定到新生成的按钮的方法。我将自己编码到一个角落,我的页面内容是从其后面的代码中添加的,字符串中的 hml

articleHTML += "<asp:Button ID='button' type='button' OnClick='Pull_Click' class='btn btn-default btn- lg'>Pull</asp:button>";

protected void Pull_Click(object sender, EventArgs e)  {
        LabelTest.Text = "Works";  
} 

点击按钮时不会调用Pull_Cick。我猜我需要直接在模板中循环浏览我的内容?谢谢!

【问题讨论】:

  • asp:Button 需要 runat 标记
  • 您无法通过 JavaScript 创建服务器端 Button 控件。想想 Web 表单是如何工作的。 Web 表单标记在服务器端进行处理,生成的 HTML 被发送到客户端。客户端没有将 ASP 控件转换为 HTML 并正确连接它们的机制。

标签: c# asp.net


【解决方案1】:

您添加按钮的方式不正确,请检查

Dynamically Add ASP Controls

https://msdn.microsoft.com/en-us/library/kyt0fzt1.aspx

点击事件

 Button btn = new Button();
 btn.Text = "test";
 btn.Click += btn_Click;   
 maindiv.Controls.Add(btn);

 void btn_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }

让按钮调用ajax

        Button btn = new Button();
        btn.Text = "test";
        btn.OnClientClick = "newbtn_Click()";


    [WebMethod]
    public static string newbtnSubmit(string name)
    {
        return name;
    }

并在 JavaScript 中添加

 <script>
    function newbtn_Click()
    {
        var dataValue = { "name": "my name"};
        $.ajax({
            type: "POST",
            url: "Default.aspx/newbtnSubmit",
            data: dataValue,
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
            },
            complete: function (jqXHR, status) {
                alert("complete: " + status + "\n\nResponse: " + jqXHR.responseText);
            }
        });
    }
 </script>

【讨论】:

  • 为什么不正确?我不想去某个地方阅读为什么它不正确。如果您认为这不正确,请在此处将原因添加到您的答案中。
  • 因为您不能在运行时将 asp 按钮添加为字符串 html。我在我的 answear 中添加了来自 msdn 的参考
  • 那么现在如何让我的按钮调用 ajax?谢谢
  • @JamesA 我为您编辑了答案以进行 ajax 调用
猜你喜欢
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多