Противоречивые RaiseCallbackEvents из ICallbackEventHandler при использовании пользовательского элемента управления на ASP.Net страница
-
22-08-2019 - |
Вопрос
Привет и спасибо за чтение.
Я использую интерфейс ICallbackEventHandler для выполнения некоторой обработки на стороне клиента на странице ASP.Net (ПО сравнению с 2005 годом).Все работает так, как ожидалось, за исключением следующей ситуации.Я создал пользовательский элемент управления (.ascx), который также использует ICallbackEventHandler, и разместил его на вышеупомянутой странице ASP.Net . Теперь RaiseCallbackEvent запускается в пользовательском элементе управления, но не на странице ASP.Net.Другими словами, он не срабатывает в обоих местах. Кто-нибудь еще сталкивался с этим и у кого есть решение?
Чтобы воспроизвести, просто создайте ASP.Net страницу, использующую ICallbackEventHandler, пользовательский элемент управления, использующий ICallbackEventHandler, и поместите его на ASP.Net страницу, и вы увидите, что RaiseCallbackEvent запускается в пользовательском элементе управления, но не на странице ASP.Net.
Спасибо!
Решение
Когда срабатывает событие ICallback, вам нужно будет создать свое собственное событие в элементе управления, чтобы страница могла получать уведомления.Другой вариант - реализовать интерфейс на вашей странице и потребовать, чтобы пользовательский элемент управления был размещен на странице, которая реализует интерфейс.Выполнив последнее, вы можете использовать свою страницу в качестве интерфейса и получить доступ к свойствам и методам интерфейса.
Другие советы
В верхней части страницы разметки asp вы должны включить :- EnableEventValidation="false"
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Form.aspx.cs" Inherits="Form" DynamicMasterPageFile="~masterurl/default.master" EnableEventValidation="false" %>