自己动手做博客之日志管理-2.2 模板页

23 篇文章 0 订阅
    VS.NET 2005 中提供了ASP.NET 2.0 核心框架,ASP.NET 2.0 改进了以往版本对网页设计方面支持上的不足,新增和增强了很多的功能,其中母版页控件就是一例。
    将母版页称为页面模板或许更容易理解它的作用,母版页中包含的是页面公共部分,即网页模板。母版页提供了开发人员已通过传统方式创建的功能,这些传统方式包括重复复制现有代码、文本和控件元素;使用框架集;对通用元素使用包含文件;使用ASP.NET 用户控件等。母版页具有下面的优点:

l         使用母版页可以集中处理页的通用功能,以便可以只在一个位置上进行更新。

l         使用母版页可以方便地创建一组控件和代码,并将结果应用于一组页。例如,可以在母版页上使用控件来创建一个应用于所有页的菜单。

l         通过允许控制占位符控件的呈现方式,母版页使您可以在细节上控制最终页的布局。

l         母版页提供一个对象模型,使用该对象模型可以从各个内容页自定义母版页。

    母版页实际由两部分组成,即母版页本身与一个或多个内容页。采用母版页制作的网站都含有两种文件:一种是母版页,一种是内容页。母版页的后缀为.master ,里面封装页面的公共元素;内容页的后缀为.aspx ,就是普通的aspx 页面,里面包含了除母版页外的其他公共内容。在运行时,ASP.NET 2.0 引擎会将两种页面合并再发到客户端的浏览器。
    常见的母版页结构如图1-1 所示。

1-1  母版页结构
    从上图所示的效果可以看出,在母版页中包含了两个ContentPlaceHolder 控件,这是母版页上使用的占位控件。如果要想母版页的某一区域可编辑,拖动该控件到该位置即可。但是,需要注意的是母版页中的ContentPlaceHolder 控件的ID 属性必须与内容页中Content 控件的ContentPlaceHolderID 属性绑定。
    在Web 项目的【解决方案资源管理器】窗格中右击项目名称选择【添加新项】命令,在弹出的【添加新项】对话框中选择【母版页】项,再单击【确定】按钮添加一个名为MasterPage.master 的母版页到项目中。
切换至【源】视图,我们会发现母版页除了头部声明与普通的aspx 页面不同外,代码结构上与普通的aspx 页面并没有什么差别。
    了解了以上预备知识之后,接下来开始使用母版页对系统进行布局。

1-2  使用母版页的系统
    如图1-2 所示为经过设计后母版页中的系统,可以很明显看出包含了一个ContentPlaceHolder 控件,也就是说只有一个区域是可改变的。
    由于在母版页中的内容是全局的,因此在图1-2 所示的系统布局可以看到将博客的名称、导航链接和常用功能都固定在母版页中。这其中包含一些需要从数据库中读取来显示的信息,例如,系统中包含的文章数量和评论的数量等。
    母版页与普通的ASPX 页面一样,可以在后台文件中编写代码。在本系统中的母版页布局中包含有如下的语句:
<div id="nav_r">

 <%=LogCount%>篇文章,<%=CommentCount%>篇评论, 当前日期:<%=DateTime.Now.ToString()%>

</div>
    这些数据是要使用数据库的,需要在后台中通过编写代码操作数据库获取结果。双击打开MasterPage.master.cs 文件,引用如下两个数据库所需的命名空间:
using System.Data.Sql;
using System.Data.SqlClient;
    先为页面声明两个全局变量,这两个变量的名称与前台布局中的必须相同,然后在页面载入过程Page_Load 添加语句,如下所示:

 public string LogCount, CommentCount;

 protected void Page_Load(object sender, EventArgs e)

 {

      if (!IsPostBack)

     {

         getLogCount();//获取日志数量

         getCommentCount();//获取评论数量

     }
}
    其中IsPostBack 是用来判断是第一次浏览该页,还是单击【刷新】按钮载入的页面。如果是第一次则调用getLogCount 方法和getCommentCount 方法。
    getLogCount 方法用于获取日志的数量,通过数据库分析得知,这个值需要对info 表进行操作,如下所示为这个方法的代码:

 void getLogCount() {

      string strsql = "select count(id) as logCount from info";

      dbconfig dbconn = new dbconfig();

      SqlCommand cmd = new SqlCommand(strsql, dbconn.conn);

      SqlDataReader dr = cmd.ExecuteReader();

      if (dr.Read()) {

          LogCount = dr["logCount"].ToString();

      }

      dr.Close();

      dbconn.Clear();

 }
    这里是第一次使用数据库类,因此读者要重点掌握数据库类的使用方法。dr.Read() 在有返回值是为true ,往下的语句获取日志数量并赋于全局变量LogCount 值。最后关闭连接,并释放资源。
    getCommentCount 方法则用来获取评论的数量,与getLogCount 方法类似,不同的是这里操作的是Comment 评论表,需要将结果保存到CommentCount 变量,代码如下:

 void getCommentCount()

 {

      string strsql = "select count(id) as CommentCount from Comment";

      dbconfig dbconn = new dbconfig();

      SqlCommand cmd = new SqlCommand(strsql, dbconn.conn);

      SqlDataReader dr = cmd.ExecuteReader();

      if (dr.Read()) {

          CommentCount = dr["CommentCount"].ToString();

      }

      dr.Close();

      dbconn.Clear();

 }
    图1-2 所示的效果中还有一些同样需要操作数据库,我们将在下面对它们进行逐一介绍。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值