イベントを正しくバブルするのに苦労しています。
ユーザーコントロールを備えたマスターページと、マスターページの子であるページがあります。
ユーザーコントロールとページは共通のデータを共有するため、ユーザーコントロールが更新されると、ページが更新され、その逆も同様です。
ユーザーコントロールは、イベントをマスターページに公開しました。これは私が使用する形式です。
クラス外:
public delegate void OfferBookmarkRemoved(int OfferID);
クラス内:
public event OfferBookmarkRemoved OfferBookmarkRemoved;
protected void LV_Bookmarks_ItemCommand(object source, ListViewCommandEventArgs e)
{
if (e.CommandName == "RemoveOffer")
{
var offerId = (int)e.CommandArgument;
OnOfferBookmarkRemoved(offerId);
}
}
void OnOfferBookmarkRemoved(int offerId)
{
offerId.ThrowDefault("offerId");
if (OfferBookmarkRemoved != null)
{
OfferBookmarkRemoved(offerId);
}
}
これで、マスターページで使用できます。マスターページでは何もしません。次のように、aspxページで使用できるようにイベントを公開します。
Master.OfferBookmarkRemoved += OnBookmarkRemoved;
void OnBookmarkRemoved(int offerId)
{
offerId.ThrowDefault("offerId");
OfferList1.UpdateBookmark(offerId);
}
したがって、不足しているのは、マスターでイベントをリッスンし、ページで使用できるようにすることです。
誰か助けてもらえますか?