官方的这个模版机制还是很诱人的,巧妙的使用了页面时间生存周期来完成页面的输出
NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»在生成模版的时候模版引擎会读取一边default目录下的所有htm和config文件,两者差别就不多少了,再根据模版引擎的正则语法分析出模版中的正则语法,将它转换成c#语言,接着将它写成aspx文件,注意,aspx文件中其实只有一个方法,而且还是重写里了的
- override protected void OnInit(EventArgs e)NÃqHa¾êíOànt.discuz.netÑF^å·ê»
NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»
NÃqHa¾êíOànt.discuz.netÑF^å·ê»
复制代码在页面开始初始化的时候就完成了页面的生成,在呈现的时候直接将内容输出
NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»注意:模版语法可以查看一下Common中的PageTemplate.cs文件NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»页面中所需的所有变量来自哪里?当然是来自它继承的那个cs文件,例如showforum.aspx
NÃqHa¾êíOànt.discuz.netÑF^å·ê»它有一个对应的showforum.aspx.cs文件,当然你也可以不用这个名字,如果用了其他名字只需指定inherits即可
NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»这里的页面都继承自一个PageBase的类,它里面有个虚方法叫ShowPage()
NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»在这个PageBase中官方为我们实现了很多有用的变量,如果我们觉得变量不够用,我们可以自己声明,不过为了能在模版中使用,我们还是要声明成public公共访问
NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»接下来我们只要重写ShowPage()方法即可
NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»我们声明的变量的值就是在这个里面赋值的,接下来就交给.net的OnInit方法去生成templateBuilder吧
NÃqHa¾êíOànt.discuz.netÑF^å·ê»NÃqHa¾êíOànt.discuz.netÑF^å·ê»这一系列的动作都是使用了.net的实例化过程和页面事件顺序来实现的。
NÃqHa¾êíOànt.discuz.netÑF^å·ê»