- ASP.NET項目開發全程實錄(第4版)
- 明日科技
- 1094字
- 2019-12-06 12:04:54
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
