1

我正在尝试在单击按钮时加载用户控件,但问题是,它在用户控件内的回发时消失了。

这就是我加载控件的方式:

private bool IsUserControl
{
    get
    {
        if (ViewState["IsUserControl"] != null)
        {
            return (bool)ViewState["IsUserControl"];
        }
        else
        {
            return false;
        }
    }
    set
    {
        ViewState["IsUserControl"] = value;
    }
}


#region Usercontrols
private void CreateUserControlAllNews()
{
    Control featuredProduct = Page.LoadControl("path/usercontrol.ascx");
    plh1.Controls.Add(featuredProduct);
}

#endregion
protected void allNewsbtn_Click(object sender, EventArgs e)
{

    this.IsUserControl = true;
    if(IsUserControl)
    CreateUserControlAllNews();
}
4

2 回答 2

4

当页面回发时,您需要重新加载控件。例如,

protected void Page_Load(object sender, EventArgs e)
{
    if (IsUserControl)
    {
        CreateUserControlAllNews();        
    }
}

private void CreateUserControlAllNews()
{
    Control featuredProduct = Page.LoadControl("path/usercontrol.ascx");
    featuredProduct.ID = "1234";
    plh1.Controls.Add(featuredProduct);
}
于 2013-01-22T15:26:31.887 回答
1

当然它会消失,每个请求都会创建一个全新的页面实例,如果您不在该回发上重新创建控件,那么它将不存在。

有关这个非常常见的问题,请参阅以下链接。

会唱歌的鳗鱼

另一个问题

于 2013-01-22T15:30:39.313 回答