【问题标题】:Asp.net page - user control communicationAsp.net页面——用户控制通信
【发布时间】: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


    【解决方案1】:

    我找到了第一个问题的解决方案

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

    这是导致问题的原因。移动这一行

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

    out of if (!IsPostBack)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2014-02-19
      • 1970-01-01
      • 2010-12-21
      • 2012-07-22
      相关资源
      最近更新 更多