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

もちろん、それは消え、すべてのリクエストはあなたのページの真新しいインスタンスを作成します、そしてあなたがそのポストバックでコントロールを再作成しなければ、それは存在しません。

この非常に一般的な問題については、次のリンクを参照してください。

ウナギを歌う

別のSOの質問

于 2013-01-22T15:30:39.313 に答える