ASP.NET项目开发全程实录(第4版)
上QQ阅读APP看书,第一时间看更新

3.7 产品信息模块设计

3.7.1 产品信息模块概述

对于一个企业的门户网站,宣传自己公司的产品是必不可少的,本企业门户网站的首页分类展示了公司的最新产品,而且网站导航条中设置了一个“产品展示”菜单,用户可以通过选择其子菜单项查看相关类别的所有产品信息。产品信息页面运行效果如图3.18所示。

图3.18 产品信息页面

3.7.2 产品信息模块技术分析

产品信息模块实现的关键是如何下载正在查看的产品,这里主要用到了Response类的AppendHeader方法和WriteFile方法,下面分别对它们进行详细介绍。

1. AppendHeader方法

用来将HTTP头添加到输出流中,其语法格式如下:

public void AppendHeader(string name,string value)

 name:要追加value的HTTP标头的名称。

 value:要追加到name标头的值。

2. WriteFile方法

用来将指定的文件直接写入HTTP响应输出流,该方法有4种重载形式,其中,本系统中用到的重载形式如下:

public void WriteFile(string filename)

 filename:要写入HTTP输出的文件名。

例如,企业门户网站中使用Response类的AppendHeader方法和WriteFile方法实现了产品的下载功能,关键代码如下:

注意

这里需要注意的是对文件名进行UTF8编码,否则,当文件名为中文名时,下载文件会出现文件名乱码的问题。

3.7.3 产品信息模块实现过程

本模块使用的数据表:tb_Product

产品信息模块的具体实现步骤如下:

(1)新建一个基于MasterPage.master母版页的Web页面,命名为Sort.aspx,主要用于查看产品的详细信息,该页面中主要用到的控件如表3.9所示。

表3.9 产品信息页面主要用到的控件

(2)在Sort.aspx页面中,首先创建公共类DataOperate和ProductOperate的对象,以便调用其中的方法,代码如下:

例程23 代码位置:资源包\TM\03\EnterpriseWeb\User\Sort.aspx.cs

Sort.aspx页面的后台代码中自定义了两个方法,分别为BindInfo方法和BindAllInfo方法。BindInfo方法用来根据接收的产品、软件或补丁编号查找其详细信息,并将查找结果显示在DataList控件中,其实现代码如下:

例程24 代码位置:资源包\TM\03\EnterpriseWeb\User\Sort.aspx.cs

BindAllInfo方法用来根据接收的类型编号查找产品、软件或补丁信息,并将查找结果显示在DataList控件中。BindAllInfo方法的实现代码如下:

例程25 代码位置:资源包\TM\03\EnterpriseWeb\User\Sort.aspx.cs

产品、软件或补丁的详细信息是通过在Sort.aspx页面的HTML代码页中对相应的Label控件绑定进行显示的,由于各Label控件的绑定方式相同,这里以“产品名称”为例介绍,将数据表中的Name字段绑定到“产品名称”Label控件上的代码如下:

例程26 代码位置:资源包\TM\03\EnterpriseWeb\User\Sort.aspx

<asp:Label ID="labName" runat="server" Font-Size="9pt" ><%#
DataBinder.Eval(Container.DataItem,"Name") %></asp:Label>

Sort.aspx页面加载时,首先判断接收的参数是产品、软件或补丁编号,还是类别编号,如果是产品、软件或补丁编号,则调用BindInfo方法显示数据,如果是类别编号,则调用BindAllInfo方法显示数据。Sort.aspx页面的Page_Load事件代码如下:

例程27 代码位置:资源包\TM\03\EnterpriseWeb\User\Sort.aspx.cs

单击“点击下载”超级链接,如果附件存在,则下载指定的文件,同时调用公共类ProductOperate中的UpdateLoadNum方法更新文件的下载次数,否则弹出“文件不存在”信息提示。实现下载功能的代码如下:

例程28 代码位置:资源包\TM\03\EnterpriseWeb\User\Sort.aspx.cs

LinkButton控件分别用来实现“第一页”、“上一页”、“下一页”和“最后一页”功能,其实现代码如下:

例程29 代码位置:资源包\TM\03\EnterpriseWeb\User\Sort.aspx.cs