2009-09-01 64 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)