私はこれについて広範囲に検索しましたが、私の問題の解決策を見つけることができません。そのページのユーザーコントロールから、ページの背後にあるコードで関数を呼び出そうとしています。
マスターページを使用するWebアプリケーションがあります。コンテンツページの1つに書き込んだユーザーコントロールを追加しています。ツールボックスからドラッグアンドドロップして、aspxページにユーザーコントロールを追加しました。コードビハインドからユーザーコントロールを確認できますが、パブリック関数にアクセスできません。この問題を修正するために、コードビハインドでユーザーコントロールのオブジェクトを作成し、LoadControl関数を使用しました。それはすべてうまくいくようです。
私が抱えている問題は、aspxページからユーザーコントロールにをEventHandlerにフックしようとしているときです。すべてが正常にコンパイルおよび実行されますが、ページで何も発生していません。問題は、EventHandlerが常にnullであるということだと思います。
ユーザー制御コード
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ページの両方でそれを確認してください。解決策をありがとうJunePaik。ディエゴ・デ・ヴィータにもご意見をお寄せいただきありがとうございます。