C# 设置动态创建的asp:按钮的OnClick属性

C# 设置动态创建的asp:按钮的OnClick属性,c#,asp.net,button,onclick,C#,Asp.net,Button,Onclick,我有一个需要动态创建的按钮,但问题是我无法为它设置OnClick属性以运行服务器端方法btnSubmit\u Click(objectsender,EventArgs e) 如果我这样做: btnSubmit.Attributes["OnClick"] = "btnSubmit_Click()"; 实际上,它将它添加到OnClientClick中 btnSubmit.Click += new EventHandler(btnSubmit_Click); 也从不开火 如何设置实际的服务器OnC

我有一个需要动态创建的按钮,但问题是我无法为它设置OnClick属性以运行服务器端方法btnSubmit\u Click(objectsender,EventArgs e)

如果我这样做:

btnSubmit.Attributes["OnClick"] = "btnSubmit_Click()";
实际上,它将它添加到OnClientClick中

btnSubmit.Click += new EventHandler(btnSubmit_Click);
也从不开火

如何设置实际的服务器OnClick

btnSubmit.Click += new EventHandler(btnSubmit_Click);
//您的事件处理程序

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

页面_PreInit中的绑定事件

 public Button btnSubmit; // Add the on class level as data member

Protected void Page_PreInit(object sender, EventArgs e)
{
       btnSubmit = new Button();        
       btnSubmit.Text = "Click me";           
       btnSubmit.Click +=new EventHandler(btnSubmit_Click);
       this.form1.Controls.Add(btnSubmit); 
}
添加此事件

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

忘了提了,我也试过了。永远不要开枪。有没有办法在c代码中设置runat=server?真的吗??您在哪里添加按钮和事件处理程序?您需要在page_init中执行此操作。。。或者Page_PreInit,如果您的页面没有关联的母版页。您是否在Page_Init/Page_PreInit内创建了按钮?您是否放置了Runat=server标记?@alliswell,他正在以编程方式创建按钮它是在Page_load中创建的,它在一个也以编程方式创建的表中只是尝试了一下,它仍然没有启动。我想作为黑客,我可以在aspx上创建按钮,然后将其复制到相应的单元格中。Hacky,但它在实例化按钮的地方工作?我已经更新了我的答案,这是经过测试的代码,必须运行。回发或回调参数无效。在配置或页面中使用启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合要求,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。因此,您获得了回发,请在页面标记中添加此EnableEventValidation=“false”