ASP.NET按钮的OnClick事件未触发

39

我在ASP.NET按钮控件中遇到了问题。

我在表单中定义了一个按钮,但是当我点击该按钮时,按钮的onclick事件没有触发。

<asp:Button ID="btn_QuaSave" runat="server" Text="SAVE" OnClick="btn_QuaSave_Click" /> 

protected void btn_QuaSave_Click(object sender, EventArgs e)
{

}

1
这个有帮助吗?http://stackoverflow.com/questions/2669448/onclick-not-firing - keyboardP
1
你怎么知道事件没有触发? - rhughes
尝试设置一个断点。 - Yahya
8
请检查您的按钮的CausesValidation属性。如果为true,请将其设置为False。还要检查您的asp.net页面代码文件链接是否与您放置事件的链接完全相同。 - Jibran Khan
不要解释其中的内容。 - Amjad Shah
显示剩余2条评论
17个回答

37

因为你的按钮处于控制中,可能是由于另一个控件的验证不允许按钮提交。在我的情况下,解决方法是给按钮添加CausesValidation属性:

<asp:Button ID="btn_QuaSave" runat="server" Text="SAVE" OnClick="btn_QuaSave_Click" CausesValidation="False"/> 

14

你是从其他页面或应用程序中复制了这个方法吗?如果是,它将不起作用。因此,您需要删除分配给按钮的事件和事件名称,然后进入设计并转到按钮事件属性,在它旁边双击onClick事件,它将生成事件并自动为按钮分配事件名称。 这应该可以解决问题。


1
i not copy it from other page - Amjad Shah
最终我阅读了你的回答并决定移动页面,创建一个同名的新页面,手动移动标记和代码。非常顺利! - Michael Eakins

9

我曾经遇到过同样的问题,我的aspnet按钮的点击事件没有响应。后来发现页面的其他部分中有一个带有html“required”属性的输入框。

这可能听起来很奇怪,但一旦删除了required属性,按钮就可以正常使用了。


好奇怪。这个错误让我重新编写了我的代码。还是一样的问题。感谢您的提示。不得不赞扬您,先生。 - AdorableVB
如果您可以忽略必填字段,请在您的asp:button中添加 CausesValidation="false"。 - DavidG

8

我曾经遇到过类似的问题,但是所有的答案都没有解决我的问题。也许我的解决方案对某些人有帮助。如果你不介意在按钮点击时提交,只需要将UseSubmitBehavior="false"附加到点击事件设置中,这可能值得一试。


7
如果您在onClick事件中使用UpdatePanel,可能会出现这种情况。请在您的页面标记中使用“EnableEventValidation = false”,如下所示:
<%@ Page Language="C#" MasterPageFile="~/ars_home.master" AutoEventWireup="true" CodeFile="Transaction_Window.aspx.cs" Inherits="Transaction_Window" EnableEventValidation="false" %>

希望这可以帮助到您。

3
在我的情况下,我在 CKEditor 控件中放置了 required="required" 属性。
移除此属性可以修复此问题。
修改前
<CKEditor:CKEditorControl ID="txtDescription" BasePath="/ckeditor/" runat="server" required="required"></CKEditor:CKEditorControl>

之后

<CKEditor:CKEditorControl ID="txtDescription" BasePath="/ckeditor/" runat="server"></CKEditor:CKEditorControl>

1
是的,有人在aspx中加入了一个必需的内容。 - SixOThree
@SixOThree 你知道吗,你的评论实际上就是答案!非常感谢。 - Amol

2

我曾经遇到同样的问题,尝试了所有上述方法,包括更改按钮等,但最终我做了一个简单的操作:我在同一页中使用了两个表单,其中一个表单嵌套在另一个表单内,所以我移除了其中一个表单,然后问题解决了 :)


1
那对我有用。在我的情况下,我下载的模板中有一个表单元素,我将其删除了。 - Muhammad Ali

2
尝试进入Visual Studio的设计模式,在其中找到按钮并双击该按钮以设置事件。否则,一旦在设计模式中选择了按钮,请转到属性并尝试从那里进行设置。

1
在将LinkButton嵌套在Repeater中的情况下,您必须使用类似以下内容的东西:
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="MyUpdate">LinkButton</asp:LinkButton>

 protected void Repeater1_OnItemCommand(object source, RepeaterCommandEventArgs e)
 {
    if (e.CommandName.Equals("MyUpdate"))
    {
        // some code
    }
 }

1
为您的验证器元素添加验证组。这样可以区分不同的组,以包括在验证中。同时也将验证组添加到您的提交按钮中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接