Asp.Net中动态加载控件

    技术2022-05-11  36

    我们在Asp.Net开发过程中,有时候为了开发的需要,或达到一定的效果,我们会才取动态加载用户控件的方法来实现,动态加载用户控件,可以在同一个页面里面,根据不同的情况显示不同的内容,使我们在开发省时省力。  那么我们怎么实现动态加载用户控件呢,其时很简单,我们只要在页面里要放控的件的地方放一个占位控件 <asp:PlaceHolder ID="phContent" runat="server"></asp:PlaceHolder> ,这个控件是Asp.Net自带的,然后在程序用就可以很简单地实现了,程序如下:

          Control Ctr = Page.LoadControl("UserControl/Control.ascx");  //加载控件      Ctr.ID = "ControlName";  //申明控件名      phContent.EnableViewState = false;  //指定是否启用ViewState      phContent.Controls.Add(Ctr); //输出控件

        当然,不一定只有用户控件可以这样实现,其它的控件也都可以类似地实现。

     

     

        在ASP.NET中动态加载内容(用户控件和模板)要点:1. 使用Page.ParseControl2. 使用base.LoadControl第一部分:加载模板下面是一个模板“<table width=100%><tr><td width=100% colspan=2 runat=server id=ContainerTop></td></tr><tr><td width=30% runat=server id=ContainerLeft></td><td width=70% runat=server id=ContainerRight></td></tr></table>”如何把它添加到页面中那。 

    首先,你要有一个页面(.aspx),在页面中有一个一行一列的表格,并且是服务器端的TD我们就把它命名为TemplateContainer。好了现在到代码编辑窗口,在page_load中加载模板。第二步,使用Page.ParseControl将上边的HTML代码分析为web窗体页或用户控件的System.web.ui.control如下代码:protected System.Web.UI.HtmlControls.HtmlTableCell TemplateContainer;System.Web.UI.Control objContainer;private void Page_Load(object sender, System.EventArgs e){objContainer =Page.ParseControl(“上边的HTML代码);this.TempContainer.Controls.Add(objContainer); }模板已经加载完毕。第二部分:加载用户控件首先,你要确定用户控件要加载到页面的那个位置。现在你会发现第一部分的那段HTML代码,其中每一个TD都是一个容器你可以通过Page.FindControl找到你要加载控件的容器。如下代码:System.Web.UI.Control objControl=Page.FindControl("ContainerTop");第二,找到容器后,就可以将你的用户控件加载到页面中了。如下代码:objControl.Controls.Add(base.LoadControl(“用户控件虚拟路径”));现在运行程序看看,是不是已经加载了用户控件。

    以上是动态加载模板和用户控件的一些主要部分,要想做一个比较好的页面还需要加入许多必要的东西,如将模板和用户控件的虚拟路径都保存到数据库中、对页面已经加载了的用户控件进行位置的调整。对权限的控制如那些人可以看什么用户控件那些人不可以 看用户控件,等等。下面中一个例子:http://elt.nec.edu.cn,不过在这里你不能调整用户件位置。(我当然可以了)在这个例子中的导航栏也是动态加载的,不同的页可能使用不同的模板加载不同的用户控件。


    最新回复(0)