【发布时间】:2009-09-01 12:48:09
【问题描述】:
我有一个页面 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的Now按钮点击事件
protected void imgBtnBuyNow_Click(object sender, ImageClickEventArgs e)
{
if (ActivityLog != null)
{
ActivityLog(Product);
}
Response.Redirect("~/User/ShoppingCart.aspx");
}
我的问题是,每当我点击这个按钮时,ActivityLog 都是空的。为什么它是空的? 我的想法是,一旦我单击此按钮,页面就会发回并且其先前的状态会丢失。 请帮我找出原因和解决方案。
其次,我想取消空值检查
**if (ActivityLog != null)**
{
ActivityLog(Product);
}
我看到一些代码在声明时使用默认值实例化委托,但我找不到它。请帮忙。
【问题讨论】:
标签: asp.net user-controls delegates