• BlogEngine 代码学习笔记之一


     

         最近打算系统学习下asp.net,看了几个样例,就打算从BlogEngine开始学起了,代码量比较合适。准备写一些笔记,BlogEngine的学习笔记已经有人写了,BlogEngine.Net架构与源代码分析系列 。我会参考这一个系列,尽量多写一些这个系列没有提到的部分吧。这个系列的起点比较高,前几篇就分析了一些比较本质的东西,这个对于像我这样的初学者来说,有点抽象,难以把握。所以我这个系列先从页面上的主要功能,以及大致上如何实现这些功能看起,然后再深入抽象出它的开发思想所用的模式等等。我用的BlogEngine的版本是1.5.0.7。

         拿到代码首先先看主页,很遗憾的是,在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();
            }
        }
    ……未完待续 事情太多了。。。。
  • 相关阅读:
    EF性能之关联加载
    【迁移】—Entity Framework实例详解
    GRIDVIEW多行多列合并单元格(合并列)
    使用Word2013发布随笔到博客园
    课堂资料下载-有问题加群-为杜绝有广告泛滥.固加群收费.
    strstr ShellCode实现
    X86保护模式入门简介
    WDK7600编译器环境配置
    内核驱动驱动对象 Driver_OBJECT
    基本的三角函数总结
  • 原文地址:https://www.cnblogs.com/yinzixin/p/1594126.html
Copyright © 2020-2023  润新知