zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    ……未完待续 事情太多了。。。。
  • 相关阅读:
    Codeforces Round #750 (Div.2) A~F1题解
    ICPC2020南京站 M Monster Hunter
    Codeforces Round #749 A~E题解
    CF1396B Stoned Game
    CF1338D Nested Rubber Bands
    HDU7134 Public Transport System
    ASP.NET Core 404错误(转自其它网站)
    测试用例你了解多少
    软件测试的基本过程有几个步骤
    软件测试相关知识
  • 原文地址:https://www.cnblogs.com/yinzixin/p/1594126.html
Copyright © 2011-2022 走看看