asp.net中动态加载用户控件的办法

很多网友在按钮的click事件中动态添加用户控件在页面回传后消失了或者就是用户控件中的按钮事件不能触发,下面是解决办法:
(1)
首先添加一个用户控件:WebUserControl1.ascx
添加一个按钮:public System.Web.UI.WebControls.Button ucb;Text为"用户控件的按钮"(等会要在Page中用到这个按钮,所以设置为public)
<asp:Button id="ucb" Text="用户控件的按钮" runat="server"></asp:Button>
为按钮的click事件添加代码:
Response.Write(i.ToString());
i++;
在类中申明static int i=0;
这样通过点击按钮可以看到点击一次,计数增加1
(2)
添加一个页面
放置一个PlaceHolder,两个按钮
<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button id="Button1" runat="server" Text="加载用户控件"></asp:Button>
<asp:Button id="Button2" runat="server" Text="获取用户控件中的值"></asp:Button>
添加一个加载用户控件的操作:
private void adduc()
  {
   WebUserControl1 uc=(WebUserControl1)Page.LoadControl("WebUserControl1.ascx");
   uc.ID="uc";
   this.PlaceHolder1.Controls.Add(uc);
  }
为第一个按钮增加click事件:
 private void Button1_Click(object sender, System.EventArgs e)
  {
   if(ViewState["adduc"]==null)
   {
    adduc();
    ViewState["adduc"]=1;
   }
  }
我们在视图状态中增加一个标志位,表示是否点击了按钮来加载用户控件,当然如果已经加载了再点击按钮就不需要重复加载了。
关键的是需要在Page.IsPostBack的时候也要加载用户控件
(因为如果不这么做的话,回传的时候用户控件就消失了)
if(Page.IsPostBack)
   {
    if(ViewState["adduc"]!=null)
    {
     adduc();
    }
   }
下面可以点击Button1试验一下,是不是加载了用户控件?同时再点击用户控件中的按钮也能很好的触发其事件。
再为Button2添加click事件,用来读取用户控件中btn这个按钮的标题,动态加载的用户控件和设计时加载的用户控件一样也能很好的和页面进行交互:
private void Button2_Click(object sender, System.EventArgs e)
  {
   if(ViewState["adduc"]!=null)
   {
    Response.Write(((WebUserControl1)Page.FindControl("uc")).ucb.Text);
   }   
  }
这里注意到在加载用户控件的时候我们为之指定了id,能够方便的通过FindControl来找到
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ASP.NET 网页转换为用户控件,可以让我们在多个页面重复使用相同的功能模块,提高代码的复用性和可维护性。下面是将 ASP.NET 网页转换为用户控件的步骤: 1. 创建用户控件:在 Visual Studio ,右键单击 Web 应用程序项目,选择“添加”->“新建项”,在“添加新建项”对话框选择“Web 用户控件”,并指定控件名称和路径。 2. 复制 ASP.NET 网页代码:将要转换的 ASP.NET 网页的 HTML、代码和样式等内容复制到用户控件文件。 3. 替换 Page 指令:将 ASP.NET 网页的 Page 指令(<%@ Page %>)替换为 Control 指令(<%@ Control %>)。 4. 替换代码的 Page 属性:将 ASP.NET 网页的 Page 属性(如 Page_Load、Page_Init 等)替换为 Control 属性(如 Load、Init 等)。 5. 添加控件注册:在 ASP.NET 网页添加用户控件的注册代码,在页面声明使用该控件。 6. 调整代码逻辑:由于用户控件不是一个独立的页面,因此需要调整代码逻辑,处理控件与页面之间的交互。 7. 构建用户控件:编译用户控件,生成 DLL 文件,并将其添加到项目。 8. 在页面使用用户控件:在需要使用用户控件ASP.NET 页面添加控件的引用,并在页面添加控件标签,即可使用用户控件。 总之,将 ASP.NET 网页转换为用户控件可以提高代码的复用性和可维护性,但需要注意控件与页面之间的交互和逻辑调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值