在首页中的任何地方单击日志标题链接将在打开的页面中浏览日志正文;如果单击了日志分类中的链接,将会在页面中显示某一类别的日志。这也就是查看日志的两个模块:查看日志列表和日志正文。
日志列表与系统首页的惟一区别就是,在这里仅列出了一个类别的日志列表,像分页、最新日志和评论这些都与首页相同,如图
1-7
所即为查看日志列表时的效果。
图1-7 查看日志列表效果
这惟一的区别在实现时代码也不同。首先是这里需要接受一个参数指定要显示的类别,在图1-7所示的地址栏中也可以看到LogList.aspx后有一串字符“?id= 108 ” ,定义了一个id参数,此时的值为108,多个参数之间使用”&”符号连接。
了解了这些,剩下的工作就是编写代码来获取这个参数的值,然后根据此值查询到符合条件的数据并显示。
在LogList.aspx.cs文件的Page_Load()方法中,添加如下代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request["id"] != null) {
BindLog();
}
}
}
上述代码中的最内层if语句判断页面加载过程中是否有一个id参数,如果有则调用BindLog()方法。
Request对象ASP.NET中的内置对象,其主要功能是从客户端获取数据。使用该对象可以访问任何HTTP请求传递的信息,包括使用POST方法或者GET方法传递的参数、cookie和用户验证。由于Request对象是Page对象的成员,因此在程序中可以直接使用,也不用声明和实例化。
最重要的是BindLog()方法,它与 1.2.2 节中的同名方法惟一不同的是查询语句,如下所示为这里使用的新语句:
String sql = "SELECT * FROM info where sortid="+Request["id"]+" order by id desc";
根据这个查询语句和图1-7所示的效果,得知在BindLog()方法中sql变量的为:
sql="SELECT * FROM info WHERE sortid=108 ORDER BY id DESC";
执行后会查询info表中类别编号为108的所有日志数据,然后根据ID来降序排列。