Совместное использование кода обработчика событий между страницами - PullRequest
4 голосов
/ 13 апреля 2011

Как создать код обработки событий в ASP.NET и поделиться им между элементами управления на нескольких страницах?

Например, две страницы с

<asp:Repeater runat="server" OnItemCreated="NavigationItemCreated">

Вместо того, чтобы реплицировать его для каждогостраница, которую я пытался поместить в класс, к которому обе страницы имеют доступ к

<asp:Repeater runat="server" OnItemCreated="MyHelper.NavigationItemCreated">

Класс выглядит следующим образом:

public class MyHelper
{
    public static void NavigationItemCreated(object sender, RepeaterItemEventArgs e) { }
    public static string MyProperty { get; set; }
}

Однако при попытке запуска появляется ошибка(происходит с static или без него):

Сообщение об ошибке компилятора: CS1061: «ASP.page_default_aspx» не содержит определения «MyHelper» и не имеет метода расширения »MyHelper ', принимающий первый аргумент типа' ASP.page_default_aspx ', может быть найден (отсутствует директива using или ссылка на сборку?)

Я все еще могу получить доступ к MyProperty с <%# MyHelper.MyProperty %>,так что MyHelper может использоваться страницей, но не обработчиками событий.

Обновление:
Сделал класс и код обработки событий статическими, и это тоже не работаети не помещает его в свое собственное пространство имен, и выпеть MyNamespace.MyHelper.NavigationItemCreated

Ответы [ 3 ]

1 голос
/ 13 апреля 2011

Вы можете создать пользовательский элемент управления или создать свой собственный класс, который расширяет стандартный класс Repeater. В этом пользовательском элементе управления вы реализуете общую функциональность OnItemCreated.

0 голосов
/ 11 июля 2011

Вы можете создать базовую страницу и поместить туда код общего обработчика событий.

Затем на своей дочерней странице, которая наследуется от этой базовой страницы, вы можете вызвать метод обработчика событий базовой страницы.

Делая это, вы будете иметь центральную точку для управления общим кодом!Не нужно менять его везде.

0 голосов
/ 13 апреля 2011

Это будет работать

  1. Ваш MyHelper класс находится в APP_Code ?

  2. , если это чемпроверьте пространство имен, которое вы включили в свой файл кода задней части страницы по умолчанию, который содержит определение MyHelper class

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...