BlogEngine 代码学习笔记之一
2009-11-01 21:37
148 查看
最近打算系统学习下asp.net,看了几个样例,就打算从BlogEngine开始学起了,代码量比较合适。准备写一些笔记,BlogEngine的学习笔记已经有人写了,BlogEngine.Net架构与源代码分析系列 。我会参考这一个系列,尽量多写一些这个系列没有提到的部分吧。这个系列的起点比较高,前几篇就分析了一些比较本质的东西,这个对于像我这样的初学者来说,有点抽象,难以把握。所以我这个系列先从页面上的主要功能,以及大致上如何实现这些功能看起,然后再深入抽象出它的开发思想所用的模式等等。我用的BlogEngine的版本是1.5.0.7。
拿到代码首先先看主页,很遗憾的是,在VS里面打不开这个首页,提示找不到母版页。我很奇怪,在一个朋友的帮助下才知道BlogEngine的所有页面都继承自一个基类:
这个类的OnPreInit事件中,有这样一段:
……
BlogEngine是通过这种方式动态加载母版页的。
主页的代码很简单,就是两个控件,一个是PostList,这个是页面的主体,另一个是PostCalendar,这个是一个日期控件,代码在网站项目的App_Code下面,是一个继承自.NET的Calendar控件的控件,主要实现的功能是在日历的日期上显示当日发布的文章的名字,它的核心就是重写Calendar的Render方法,注意在原来的代码中这个控件的Visible是false,要把它设置成true才能看到效果。这个控件的功能比较独立,不再多说。下面主要看PostList控件。PostList控件其实是一个容器,真正显示每一篇文章的是下面要谈到的PostView控件,PostList中包含了若干PostView,并且PostList实现了分页功能。PostList的Load事件如下:
拿到代码首先先看主页,很遗憾的是,在VS里面打不开这个首页,提示找不到母版页。我很奇怪,在一个朋友的帮助下才知道BlogEngine的所有页面都继承自一个基类:
BlogEngine.Core.Web.Controls.BlogBasePage
这个类的OnPreInit事件中,有这样一段:
private string _Theme = BlogSettings.Instance.Theme;
protected override void OnPreInit(EventArgs e) { if (Request.QueryString["theme"] != null) _Theme = Request.QueryString["theme"]; MasterPageFile = Utils.RelativeWebRoot + "themes/" + _Theme + "/site.master"; base.OnPreInit(e);
……
BlogEngine是通过这种方式动态加载母版页的。
主页的代码很简单,就是两个控件,一个是PostList,这个是页面的主体,另一个是PostCalendar,这个是一个日期控件,代码在网站项目的App_Code下面,是一个继承自.NET的Calendar控件的控件,主要实现的功能是在日历的日期上显示当日发布的文章的名字,它的核心就是重写Calendar的Render方法,注意在原来的代码中这个控件的Visible是false,要把它设置成true才能看到效果。这个控件的功能比较独立,不再多说。下面主要看PostList控件。PostList控件其实是一个容器,真正显示每一篇文章的是下面要谈到的PostView控件,PostList中包含了若干PostView,并且PostList实现了分页功能。PostList的Load事件如下:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsCallback) { BindPosts(); InitPaging(); } }
……未完待续 事情太多了。。。。
相关文章推荐
- Java IO学习笔记+代码(2)
- Android 学习笔记——利用JNI技术在Android中调用、调试C++代码
- 第一行代码 广播机制Broadcast Receiver 学习笔记
- 微信小程序学习笔记——第一弹:小程序代码结构
- C++学习笔记57——非类型模板形参与泛型代码原则
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
- Hyperledger fabric 学习笔记: fabric v1.0 代码结构
- JNI学习笔记:C++代码访问Java类中的成员和方法
- ThinkPHP学习笔记(1)--写了很多简陋的面向过程的php代码,第一次学习框架。
- 学习笔记:自编码和稀疏自编码(TensorFlow代码)
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- Loadrunner错误代码27740_27995_27796学习笔记_SariyaLee
- Coursera吴恩达机器学习课程 总结笔记及作业代码——第5周神经网络续
- java学习笔记-代码块
- GCC-3.4.6源代码学习笔记(123)
- GCC-3.4.6源代码学习笔记(73)
- Spark学习笔记04:案例代码编写
- IOS开发使用纯代码开发界面_学习笔记
- Java IO学习笔记+代码(2)
- Linux Shell学习笔记:exit退出状态代码