У меня есть страница Product.aspx, там у меня есть пользовательский элемент управления ProductDisplay.ascx, созданный методом перетаскивания.
Теперь, когда в ProductDisplay.ascx нажата кнопка, я хочу вызвать функцию ведения журнала, которая находится в Product.aspx.
Для этого я использовал делегатов
на ProductDisplay.ascx
public delegate void LogUserActivity(ProductService objService);
public event LogUserActivity ActivityLog;
на Product.aspx
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ProductDisp.ActivityLog += new User_UserControl_ProductDisplayBox.LogUserActivity(LogProduct);
}
}
Теперь событие нажатия кнопки ProductDisplay.ascx
protected void imgBtnBuyNow_Click(object sender, ImageClickEventArgs e)
{
if (ActivityLog != null)
{
ActivityLog(Product);
}
Response.Redirect("~/User/ShoppingCart.aspx");
}
Моя проблема в том, что всякий раз, когда я нажимаю эту кнопку ActivityLog равен нулю. Почему он равен нулю?
Моя идея состоит в том, что, как только я нажимаю эту кнопку, страница отправляет назад, и ее предыдущее состояние теряется.
Пожалуйста, помогите мне с указанием причины и решения.
Во-вторых, я хочу покончить с проверкой нуля
**if (ActivityLog != null)**
{
ActivityLog(Product);
}
Я видел некоторый код, который создает экземпляр делегата со значением по умолчанию в тот момент, когда он объявлен, но я не смог его найти. Пожалуйста, помогите.