asp.net是编译的,处理用户控件同处理页面是类似的,页面中所有元素都是编译成特定类被asp.net页面类调用、触发事件的。用户控件也是通过此途径被复用的。当处理用户控件时,页面框架执行以下步骤: 解释ascx文件,相应解释成为一个派生于System.Web.UI.UserControl的托管类 动态编译到自动生成的装配件中。 以上过程仅在第一次使用用户控件时发生,以后复用此用户控件会省略此步骤。页面使用register指令,将会引用此类。页面中的用户控件会成为此类的实例。实际上用户控件也是编写asp.net类,派生于System.Web.UI.UserControl的类,页面使用这些类如同使用ASP.net的标准类,为以不同在于标准控件类内置可直接实例化使用,而用户控件需要在使用前进行类似页面的编译工作,编译得到类并组装到装配件后可以被实例化。 用户组件不可以通过new方式实例化,因为用户控件类属于动态生成,new的时候(这个时候应当是页面编译时候,用户控件还没有被运行使用),用户控件类还不存在。但是可以通过Page.LoadControl(string controlname)来装载,此时为了loadControl可以找到用户控件,需要采用refence指令:<%@ Refence Control=”xxx/UserControlSamples.ascx”%> 。用户控件可以被另外用户控件嵌套使用,但一定要确保用户控件引用位置正确。 用户控件本身属于UI,可以被缓存,通过ascx文件顶端的OutPutCache指令来确定。 用户控件代码中到的URL是指用户控件存在的路径,而不是调用用户控件的页面代码的路径,需要通过Page.ResolveUrl进行正确的解析。
用户控件的实质(asp.net的用户控件的背景)
最新推荐文章于 2017-01-20 22:10:02 发布