Обработчик событий всегда равен нулю

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

У меня есть веб-приложение, которое использует главную страницу. Я добавляю пользовательский элемент управления, который я написал, на одну из страниц контента. Я добавил пользовательский элемент управления на страницу aspx, перетащив его из панели инструментов. Я могу видеть пользовательский элемент управления из кода позади, но я не могу получить доступ к публичным функциям. Чтобы решить эту проблему, я создал объект пользовательского элемента управления в коде позади и использовал функцию LoadControl. Все это работает нормально.

У меня возникла проблема, когда я пытаюсь подключить EventHandler со страницы aspx к пользовательскому элементу управления. Все компилируется и работает нормально, но я ничего не вижу на странице. Я думаю, проблема в том, что EventHandler всегда равен нулю.

Пользовательский контрольный код

public partial class ucBuyerList : System.Web.UI.UserControl
{
    public delegate void BuyerSelectedEventHandler(object sender, EventArgs e);
    public event BuyerSelectedEventHandler BuyerSelected;

    private string name = "";
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private string auid = "";
    public string AUID
    {
        get { return auid; }
        set { auid = value; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    private void OnBuyerSelected(EventArgs e)
    {
        if (BuyerSelected != null)
        {
            BuyerSelected(this, new EventArgs());
        }
    }

    protected void lbBuyerList_SelectedIndexChanged(object sender, EventArgs e)
    {
        SetNameAndAUID();
        OnBuyerSelected(e);
    }

    private void SetNameAndAUID()
    {
        name = lbBuyerList.SelectedItem.Text;
        auid = lbBuyerList.SelectedItem.Value;
    }
}

Код родительской страницы

    public partial class frmBuyerInformation : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Master.changePageTitle("Buyer Information");
        buyerList.BuyerSelected += new ucBuyerList.BuyerSelectedEventHandler(buyerListControl_BuyerSelected);
    }

    void buyerListControl_BuyerSelected(object sender, EventArgs e)
    {
        DisplayBuyerInformation();
    }

    public void DisplayBuyerInformation()
    {
        tbName.Text = buyerList.Name;
        tbAUID.Text = buyerList.AUID;
    }
}

Может ли кто-нибудь увидеть, что я делаю неправильно?

РЕДАКТИРОВАТЬ :Эта проблема была решена. Приведенные выше фрагменты кода теперь работают. Если кто-то столкнется с проблемой, с которой я столкнулся, вы можете смоделировать приведенный выше код. Убедитесь, что AutoEventWireup="true"на страницах aspx и ascx. Спасибо, Джун Пайк, за ваше решение. Спасибо, Диего Де Вита, за ваш вклад.

6
задан 31 July 2012 в 16:06
поделиться