Пользовательское событие не работает при регистрации в файле ASPX - PullRequest
3 голосов
/ 21 октября 2011

Я пытаюсь зарегистрировать пользовательское событие, добавленное в пользовательский элемент управления.Я могу сделать это в коде, но не в файле aspx.

Что я делаю не так?

Спасибо!

Пользовательский элемент управления:

public delegate void MemberSelectedEventHandler(object sender, string fullMemberName);

public partial class WebUserControl1 : System.Web.UI.UserControl
{
    public event MemberSelectedEventHandler OnMemberSelected;

    protected void Button_OnClick(object sender, EventArgs e)
    {
        if (OnMemberSelected != null)
        {
            OnMemberSelected(this, "Peter");
        }
    }
}

Это работает (код за страницей aspx):

MyMemberControl.OnMemberSelected += new MemberSelectedEventHandler(MyMemberControl_OnMemberSelected);

Но это не так (страница aspx):

<scn:MemberControl OnMemberSelected="MemberControl_OnMemberSelected"  runat="server" ID="MyMemberControl" />

Ответы [ 2 ]

2 голосов
/ 03 октября 2012

В разметке вам необходимо добавить префикс к свойству события, чтобы страница знала, как зарегистрировать событие. У Морзеля был ответ, хотя он прямо не указан.

<scn:MemberControl OnOnMemberSelected="MemberControl_OnMemberSelected"  runat="server" ID="MyMemberControl" />

OnOnMemberSelected должен вызывать ваш обработчик должным образом.

2 голосов
/ 03 января 2012

Прежде всего, я должен отметить: когда вы делаете пользовательское событие, вам не нужно называть его префиксом «Вкл». .Net Framework добавляет этот префикс, и intellisense разметки покажет вам OnOnMemberSelected.

Я не знаю, нужно ли это, но попробуйте поместить объявление делегата в ваш класс WebUserControl1. Я всегда так делаю.

Разметка intellisense реагирует очень медленно, и я не вижу, будет ли она детерминированной, когда снова заполняет информацию intellisense.

Сумма всего: - поместите определение делегата в ваш класс. - построить - введите свой код разметки.

Если intellisense не работает сразу, я думаю, что это будет работать.

...