【问题标题】:Conflicting RaiseCallbackEvents of ICallbackEventHandler when using a User Control on an ASP.Net Page在 ASP.Net 页面上使用用户控件时 ICallbackEventHandler 的 RaiseCallbackEvents 冲突
【发布时间】:2009-03-25 20:53:01
【问题描述】:

您好,感谢您的阅读。

我正在使用 ICallbackEventHandler 接口在 ASP.Net 页面(VS 2005)中进行一些客户端处理。除以下情况外,一切都按预期工作。我创建了一个也使用 ICallbackEventHandler 的用户控件 (.ascx) 并将其放置在上述 ASP.Net 页面上。 现在,RaiseCallbackEvent 会在用户控件上触发,但不会在 ASP.Net 页面上触发。换句话说,它不会在两个地方都触发。有其他人遇到过这种情况并有解决方案吗?

要重现,只需创建一个使用 ICallbackEventHandler 的 ASP.Net 页面,一个使用 ICallbackEventHandler 的用户控件并将其放置在 ASP.Net 页面上,您将看到 RaiseCallbackEvent 在用户控件中触发,但不在 ASP 中.Net 页面。

谢谢!

【问题讨论】:

    标签: asp.net user-controls icallbackeventhandler


    【解决方案1】:

    在 asp 标记页面的顶部,您必须打开:- EnableEventValidation="false"

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Form.aspx.cs" Inherits="Form" DynamicMasterPageFile="~masterurl/default.master" EnableEventValidation="false" %>
    

    【讨论】:

      【解决方案2】:

      当 ICallback 事件触发时,您需要在控件上引发自己的事件,以便通知页面。另一种选择是在您的页面上实现一个接口,并要求用户控件托管在实现该接口的页面上。完成后者后,您可以将您的页面转换为接口并获得对接口属性和方法的访问权限。

      【讨论】:

      • 我遇到了类似的问题,只是 100% 无法理解这个答案。我知道这已经有一段时间了,但如果你能告诉我,我将不胜感激。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      相关资源
      最近更新 更多