使用PlaceHolder动态加载用户控件,为何aspx页面再次提交后用户控件消失?

本文探讨了ASP.NET中用户控件加载和显示的问题。具体讨论了如何确保用户控件在点击按钮后能正确加载并保持显示状态,避免因回发而丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用户控件:uc.ascx(内含按钮AscxButton)
页面文件:a.aspx(内含按钮AspxButton)
流程是这样的:
在a.aspx中点击按钮AspxButton,用户控件能够出现在页面上(如果一直未点击过就不出现),其事件代码为:
AspxButton_Click()
{
UC uc = LoadControl("uc.ascx");
PlaceHolder.Controls.Add(uc);
}

这时用户控件能够准确出现在页面上。当我再按uc.ascx里的AscxButton后,则控件在页面消失。
我在a.aspx的Page_Load()中没写任何代码。

请问如何避免这种情况?我最终是希望即使点击AscxButton后页面上依然能够看到用户控件。 问题点数:50、回复次数:1Top

1 楼saucer(思归)回复于 2005-02-24 01:53:13 得分 50

you need to remember to re-load the control upon postback


public bool Loaded
{
get { object o = ViewState["Loaded"];
if (o == null) return false; else return (bool)o; }
set { ViewState["Loaded"] = value;}
}


void LoadYourControl()
{
UC uc = LoadControl("uc.ascx");
PlaceHolder1.Controls.Add(uc);
}

AspxButton_Click()
{
LoadYourControl();
Loaded = true;
}

void Page_Load(object sender, EventArgs e)
{
if (Loaded)
LoadYourControl();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值