动态加载用户控件的组件!(终结MasterPages技术)
让我们来做个页面模版吧!有了模版是不是就可以统一了呢!Sure !
比如:模版页Template.ascx中我们留出中间一个部分,或者你想要留出的一个空间,让以后放入你想要的内容。
好了!那么在我们的页面index.aspx上我们就可以引用这个Template.ascx,然后在空出的部分放入我们特别的东西,当然最好是在空的地方我们插入另外一个页面如:List.ascx,
当然我们在做个页面MyArchive.aspx.同样的我们引用这个Template.ascx,然后再在空出大那个地方我们插入了另外一个页面Archive.ascx.
非常好。我们要的两个index.aspx.和MyArchive.aspx页面是不是一样的呢?就只有我们留空的那一个地方不一样而已。
当然这样的应用可以是各种各样,可以不用框架集而达到更完美的效果。而你的页面完全可以没有重复的东西。因为我们的页面完全是组装而成的!
那么有了这个美妙的想法之后我们就开始去实现。
技术点:1、怎么留出一个空间出来,然后还要让引用页找到这个空间。
2、怎么引用模版而且还要找出留出的空间。
3、怎么引用另外一页插入我们在模版页中留出的空间。
其实所有这些就需要用到三个组件,一个是用来保留的空间,一个是用来引用页面放入到我们保留出来的空间,这两个组件其实只是起到标记的作用而已。另一个也是主要的一个就是引用模版,然后处理引用页面并插入到模版中去。
1、我们来解决的一个技术问题,留个空间很容易的就是PlaceHolder,那么我们还要考虑到ID的问题,因为我们还要找到这个地方,当然我们可能要留几个不同的地方,这样就很有必要处理一下ID的问题。那么扩展PlaceHolder同时继承INamingContainer。
我们取名为:PlugArea
那么这个主要做的事情有两件事,把本身保存起来,然后在第三个组件用到的时候取出来。
public class PlugArea : PlaceHolder, INamingContainer {