【发布时间】:2011-04-12 14:36:58
【问题描述】:
第一次按下按钮时,将调用事件处理程序并出现一个弹出窗口。退出该弹出窗口后,第二次单击该按钮时,根本不会调用事件处理程序。我已经调试了很多代码,但没有找到任何会破坏代码的“状态”,因此只提供了这个简短的代码。如果您认为需要更多资源来查明此问题,请告诉我。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ReferenceControl.ascx.cs" Inherits="DynamicForm.DynamicGenerator.Controls.ReferenceControl" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<%@ Register Src="~/DynamicGenerator/Controls/SearchControl.ascx" TagName="SearchControl" TagPrefix="dyncontrols" %>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline" UpdateMode="Conditional"><ContentTemplate>
<asp:HyperLink ID="link" runat="server"></asp:HyperLink> <asp:Button ID="btn" runat="server" Text="Välj" onclick="btn_Click" />
</asp:Panel>
<ajaxToolkit:ModalPopupExtender ID="popUpControl" runat="server" TargetControlID="popupDummyTarget" PopupControlID="pnlSearch" BackgroundCssClass="modalBackground">
</ajaxToolkit:ModalPopupExtender>
protected void btn_Click(object sender, EventArgs e)
{
ShowSearch();
}
void ShowSearch()
{
//some stuff
popUpControl.Show();
}
如何让我的按钮听取我的请求?
我已经尝试在事件处理程序中添加 DataBind(),不幸的是没有奏效。
更新1: 第二次点击在firebug中产生这个错误:
未捕获的异常:[Exception... "'Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: 无效的回发或回调参数。使用配置或 启用事件验证在页面中。出于安全目的,此功能验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调用于验证的数据。调用方法时:[nsIDOMEventListener::handleEvent]" nsresult:"0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" 位置:"JS frame :: chrome://firebug/content/spy.js :: callPageHandler :: line 744" data: no]
【问题讨论】:
-
是什么导致了弹出窗口?从您的代码中不清楚。
-
remove RenderMode="Inline" UpdateMode="Conditional"... 否则删除 updatepanel 有时会出现问题..
-
您是否启用了任何缓存?
-
@Simon:谢谢,编辑了原帖。
-
@jAX:感谢您的建议,尝试过,但没有奏效。 @CrapHands:不,我不知道。
标签: .net asp.net asp.net-ajax event-handling