Конфликт RaiseCallbackEvents из ICallbackEventHandler при использовании пользовательского элемента управления на странице ASP.Net

Привет и спасибо за чтение.

Я использую интерфейс ICallbackEventHandler для выполнения обработки на стороне клиента на странице ASP.Net (VS 2005). Все работает, как ожидалось, за исключением следующей ситуации. Я создал пользовательский элемент управления (.ascx), который также использует ICallbackEventHandler, и разместил его на вышеупомянутой странице ASP.Net. Теперь RaiseCallbackEvent запускается на пользовательском элементе управления, но не на странице ASP.Net. Другими словами, он не срабатывает в обоих местах. Кто-нибудь еще сталкивался с этим и есть решение?

Для воспроизведения просто создайте страницу ASP.Net, которая использует ICallbackEventHandler, пользовательский элемент управления, который использует ICallbackEventHandler, и поместите его на страницу ASP.Net, и вы увидите, что RaiseCallbackEvent запускается в пользовательском элементе управления, но не на странице ASP.Net,

Спасибо!

2 ответа

Решение

Когда сработает событие ICallback, вам нужно поднять собственное событие в элементе управления, чтобы страница могла быть уведомлена. Другой вариант - реализовать интерфейс на вашей странице и требовать, чтобы пользовательский элемент управления размещался на странице, реализующей интерфейс. Как только вы это сделаете, вы можете использовать свою страницу в качестве интерфейса и получить доступ к свойствам и методам интерфейса.

В верхней части страницы разметки asp вы должны включить:- EnableEventValidation="false"

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Form.aspx.cs" Inherits="Form" DynamicMasterPageFile="~masterurl/default.master" EnableEventValidation="false" %>
Другие вопросы по тегам