博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
向页面动态载入用户控件和自定义控件的方法不同
阅读量:6088 次
发布时间:2019-06-20

本文共 1296 字,大约阅读时间需要 4 分钟。

ASP.NET Web Froms中有两种控件类型“用户控件”和“自定义控件”这两种控件都可以通过拖拽放到页面上,所以经常会忽略它们之间的不同,其实它们之间有很多地方不同,这里我说一下当我们需要动态的在页面上加入这两种控件的方法的不同吧.。

动态载入用户控件的方法是,首先在页面中放上Placehold,然后在后台代码中new 自定义控件的类,然后调用placehold的Controlls.Add方法,将这个自定义控件加入进去。代码如下:

Show.aspx页 <asp:placehold id="placehold1" runat="server" />

Show.aspx.cs代码

proteted void Page_Load(obje.....){
Label control = new Label();//这里可以将Label换成任何自定义控件。 placehold.Controls.Add(control); //这时就将自定义控件动态的加入到了 }

 

当动态载入自定义控件的时候使用上面的方法就行不通了,如果使用上面的方法,那么用户控件无法初始化它内部的子控件,这因为生命周期的原因,用户控件的生命周期依赖于当前页面的生命周期,所以当需要动态的载入它时需要使用另一种方式来进行。Page类提供了一个动态载入用户控件的方法LoadControl这个方法有两个重载,一个接受一个STRING的参数,可以传递用户控件的相对路径,格式可以写成~/xxxx.ascx,第二个重载接受类型信息,也就是说可以登陆类名来在程序集中查找并载入,当将这个用户控件载入到页面中后,该用户控件并不会马上执行,这点就和上面的那种方法不同了,它会在PAGE的生命周期中对控件树进行初始化时才开始执行。下面是演示的代码:

 Show.aspx页 <asp:placehold id="placehold1" runat="server" />

Show.aspx.cs代码

proteted void Page_Load(obje.....){
MyUserControl control = Page.LoadControl("~/MyUserControl.ascx"); //或是使用类名 // MyUserControl control = Page.LoadControl(typeof(MyAppliction.MyUserControl)); placehold.Controls.Add(control); //这时就将自定义控件动态的加入到了 }

  

所以当在使用的时候要根据需要载入的控件类型来选择正确的载入方式,否则就会出现很多问题,我本人很久以前也遇到过这些问题,后来解决了,但是过了很久之后又再次遇到这种问题时又忘记了以前是怎么解决的了,所以现在将它写出来,希望能帮助一些人。

转载于:https://www.cnblogs.com/biyusoft/archive/2011/07/17/3432060.html

你可能感兴趣的文章
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>