2009-09-01 58 views
-1

我有一个页面Product.aspx,那里我有一个用户控件ProductDisplay.ascx已通过拖放创建。Asp.net页面 - 用户控制通信

现在,当在ProductDisplay.ascx中单击按钮时,我想要调用一个在Product.aspx中的日志函数。

要做到这一点我已经在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"); 
} 
用来代表

上ProductDisplay.ascx

public delegate void LogUserActivity(ProductService objService); 
public event LogUserActivity ActivityLog; 

我的问题是,只要我点击这个按钮ActivityLog为空。为什么它是空的? 我的想法是,一旦我点击这个按钮,页面回来和它以前的状态丢失。 请帮助我一个理由和解决方案。

其次,我要与空检查

**if (ActivityLog != null)** 
    { 
     ActivityLog(Product); 
    } 

我看到一些代码实例化一个委托具有缺省值声明它的时刻做掉,但我没能找到it.Please帮助。

回答

0

我已经找到解决的第一个问题

if (!IsPostBack) 
{    
    ProductDisp.ActivityLog += new User_UserControl_ProductDisplayBox.LogUserActivity(LogProduct); 

} 

这是造成issue.Move此行

ProductDisp.ActivityLog += new User_UserControl_ProductDisplayBox.LogUserActivity(LogProduct); 

出来的,如果(!的IsPostBack)