7

我有一个 ASP.NET (C#) 页面,其中包含一些 3rd 方控件、一些 ajaxy 东西和一些普通的 ASP.NET Button 控件。

单击时不会触发按钮单击事件。

在 VS 2008 的设计模式下双击按钮会切换到代码隐藏,但不会创建事件处理程序。

手动创建事件处理程序没有帮助。

整个页面太大,无法在此处包含,但这是最重要的:

<%@ Page Language="C#" MasterPageFile="~/basewidepage2.master" AutoEventWireup="true" EnableEventValidation="false" CodeFile="CompanyCompliance.aspx.cs" Inherits="CompanyCompliancePage" Title="3DSS" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<%@ Register Assembly="obout_Grid_NET" Namespace="Obout.Grid" TagPrefix="cc2" %>
<%@ Register Src="usercontrols/CalendarEx.ascx" TagName="CalendarEx" TagPrefix="uc2" %>
<%@ MasterType VirtualPath="~/basewidepage2.master" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceholder1" runat="Server">

    <script type="text/javascript">
         // a bunch of function declarations
    </script>

...以及我在页面上的按钮声明:

<asp:Button ID="LicenseCsvButton" runat="server" Text="Export to CSV" OnClick="LicenseCsvButton_Click" />

...以及背后的代码:

protected void LicenseCsvButton_Click(object sender, EventArgs e)
{
    // get data
    CompanyCompliance cc = new CompanyCompliance(Master.theCompany.ID);
    DataTable dt = cc.BusinessLicenses.Tables[0];

    // send to browser as download
    Tools.SendTableAsCsvToBrowser(Response, dt, "LicenseData");
}

有任何想法吗?可能是ajax还是什么?也许是第 3 方“约”网格控制?

更新:
我确实在一两个月前修复了这个问题,所以我回到这个问题为后代回答它,但不记得我是如何修复它的!(诅咒你,老了!)通过用 jQuery UI 替换一些 ASP.NET AJAX 控件,我取得了一些有限的成功,但我认为真正的解决方案是其中一个标签中的属性之一指向一个控件那已经不存在了。

如果您处于同样的情况,请尝试并让我知道评论中的有效方法,我会发布正确的答案。

4

9 回答 9

15

During debugging, check the CausesValidation property of your button. For some reason, one of my pages had a button defaulting to "True." When I explicitly set it to "False" everything worked.

于 2011-09-20T19:43:53.737 回答
9

我知道现在应该解决这个问题,但只是为了分享 - 我刚刚遇到了类似的问题。就我而言,问题是我RequiredFieldValidator在页面中有一个,因为它是弹出窗口的一部分,所以不可见。该验证器应该仅在单击其相关的“保存”按钮时被调用,但由于我没有任何ValidationGroup设置,它会阻止页面提交任何单击的按钮。在右侧添加一个ValidationGroup按钮解决了这个问题。

于 2012-07-25T00:12:23.370 回答
3

最近遇到了同样的问题 - 最终确定原因是该按钮被一个 juavascript 方法 onbeforesubmit 禁用(旨在防止多次提交),不幸的是,Web 表单似乎在允许代码隐藏事件之前检查按钮的启用状态扳机。

于 2011-05-04T08:11:15.860 回答
3

我刚才遇到了这个问题,这是由另一个具有 AutoPostBack="true" 的控件引起的,该控件将在按钮有机会提交表单以触发点击事件之前提交表单。

于 2012-06-01T11:42:04.080 回答
2

继承指令似乎指向一个不存在的类型。

查看 CompanyCompliance 页面的代码隐藏文件 - ("CompanyCompliance.aspx.cs")。

你应该找到正确的命名空间和类似“public partial class xxx”的东西,其中 xxx 是应该与你的继承指令对应的类的名称。也许您必须完全限定 TJB 已经说明的名称。

于 2009-09-16T07:13:38.727 回答
2

改变

CodeFile="CompanyCompliance.aspx.cs" 

CodeBehind="CompanyCompliance.aspx.cs"

相关问题:CodeFile vs CodeBehind

于 2009-09-16T01:17:32.127 回答
2

我有一个类似的问题,这真的很棘手。我最近将 VS 2005 ASP.NET 2.0 Web 表单应用程序迁移到 VS 2010 ASP.NET 4.0。

正如预期的那样,设置起来很困难,而且有问题,但是按钮没有触发点击事件的问题让我很紧张。

最后,它就像不在 site.master 表单中声明提交操作一样简单。我变了:

<FORM runat="server" name="MainForm" method="post" action="Default.aspx" id="m_mainForm" enctype="multipart/form-data">

<FORM runat="server" name="MainForm" method="post" id="m_mainForm" enctype="multipart/form-data">

繁荣。问题解决了。我希望它可以为某人节省几天的故障排除时间。可悲的是,我自己在互联网上找不到任何关于它的信息。

于 2015-06-24T21:18:32.237 回答
1

我遇到了这个问题,我更改了 Button 属性“UseSubmitBehavior”=false。现在它正在工作。

于 2015-02-20T08:27:49.287 回答
0

对于未来的答案寻求者:如果您在后面的代码中分配点击处理程序,请确保它不在 IsPostBack == false 检查内:

void Page_Load (object oSender, EventArgs oEventArgs)
{
   if (IsPostBack == false)
   {
       oButton += new EventHandler(oButton_Click); // does not work
   }
   oButton += new EventHandler(oButton_Click); // does work
}
于 2014-09-04T17:59:43.803 回答