【问题标题】:asp.net buttons wont fire their OnClick eventsasp.net 按钮不会触发其 OnClick 事件
【发布时间】:2012-08-28 12:43:22
【问题描述】:

我认为这个解决起来相当简单,因为我记得以前遇到过这个问题,但不记得我做了什么......

我决定取消一个特定的 asp.net 页面,并将它的一些控件合并到另一个现有页面(几个文本框和 2 个按钮),复制并粘贴它们并添加代码隐藏。

由于这样做,我修改后的页面上的所有按钮都不会触发 OnClick 事件,我尝试添加一个新按钮,但也没有触发。

这些按钮的实际代码隐藏非常简单 - 保存记录、response.redirect 之类的东西。

有什么想法吗?

谢谢

按钮标记

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Save" 
                Width="91px" />

代码隐藏

protected void Button1_Click(object sender, EventArgs e)
    {

        helper hl = new helper();
        hl.UpdateComplaint(txtCaseNo.Text, Forename.Text, Surname.Text, txtActionProgress.Text,            
 Response.Redirect("Complaint.aspx");
    }

【问题讨论】:

  • 你能发布按钮的标记和它们绑定的 onclick 事件吗?
  • 这里介绍了最常见的原因 - support.microsoft.com/kb/814745(AutoEventWireup 和手动连接事件处理程序)
  • 谢谢,我会通读一遍
  • 验证您的 aspx 代码文件是否与您背后的代码匹配
  • 你能发布.aspx的页面指令吗?因为这是来自@Candie 的好作品

标签: c# .net visual-studio-2010


【解决方案1】:

您可以尝试以下几件事。没有保证,但也许是朝着正确的方向推进:)

打开 Visual Studio 和相关的 ASP.NET 页面。在设计器中,单击控件,然后转到“属性”框,然后查找 OnClick 事件。如果它是空白的,请单击该框并从可用的下拉列表中选择要附加的事件处理程序。如果列表中没有事件,只需双击查看 Visual Studio 是否会为您创建默认事件处理程序,然后将之前 onClick 处理程序中的代码粘贴到该新方法中。

希望对您有所帮助。

编辑 根据后来的 cmets,建议从不同的 ASP.NET 页面完整复制和粘贴代码隐藏可能创建了与标记的 CodeFile 或 Inherits 不匹配的部分类声明新页面上的指令,这可能会导致各种奇怪的行为。

【讨论】:

  • 当我双击控件时,它会在控件单击事件中打开代码隐藏,其中包含正确的代码 - 它似乎没有触发
  • 您是否将整个代码隐藏复制并粘贴到新文件中?如果是这样,您的 page-behind 可能会声明一个与标记上的“继承”声明中的名称不同的部分类名称。这可以解释各种奇怪的行为。
  • 我认为你正在做一些事情。我已经撤消了所有更改,所以我回到了一个完全正常工作的网络应用程序,这次我将创建控件而不是复制/粘贴!谢谢大家的cmets
  • 太棒了!很高兴我能够提供至少一些帮助。祝你好运。我将修改我的答案,以纳入我所做的最后评论的概念。
【解决方案2】:

OnClick="Button1_Click" 不区分大小写吗?您是否尝试在事件处理程序中设置断点,以查看它是否触发?这可能是Page_Load 的问题吗?你做事没有

if (!Page.IsPostBack)

【讨论】:

    【解决方案3】:

    因为您在专门的 OnClick 事件后面的代码中定义了您的委托

    您必须复制此代码

    Button.Click += .....
    

    您可以在 aspx 视图或您的代码中关联此委托,对于您在代码中创建的情况,您无需复制

    如果您进行复制粘贴,请验证您的 aspx 代码文件

    【讨论】:

    • 在这种情况下,事件委托在*.aspx 标记中定义。您的解决方案是在后面的代码中创建一个按钮,或者在后面的代码中手动绑定事件。
    • 不,这不是我的答案,因为Theresa有触发问题,我告诉你有两个解决方案:1在aspx视图上定义Onclick,或者在页面的Init事件中。
    • 在她的情况下,如果她已经复制粘贴了视图,那么 Onclick 就在副本中,所以她在后面的代码中定义了 OnClick -> 所以如果她复制过去只是视图,那就是还不够,因为它可能是在后面的代码中定义的
    • 我知道你在说什么,但这能解释为什么我不能成功添加新按钮吗?我可以添加它们,但它们不会再次触发...
    • 验证您的 aspx 代码文件
    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多