- ASP.NET項目開發全程實錄(第4版)
- 明日科技
- 1431字
- 2019-12-06 12:04:37
1.7 帖子列表顯示及發帖模塊設計
1.7.1 帖子列表顯示及發帖模塊概述
當用戶單擊查看某一個子專區的帖子時,即有一個頁面專門列出所屬該專區的所有帖子的數據列表。并且,可以支持在該專區下發布一個新的帖子。帖子列表顯示效果如圖1.13所示。

圖1.13 帖子列表顯示效果
用戶發帖頁面效果如圖1.14所示。

圖1.14 用戶發帖
1.7.2 帖子列表顯示及發帖模塊技術分析
實現帖子列表顯示及發帖模塊時,用到了Razor視圖引擎中的@符號語法標記、Html幫助器和Model對象,關于@符號語法標記、Html幫助器的講解,請參見1.6.2節,這里主要對Model對象進行講解。
每個視圖都有自己的Model屬性,它是用于存放控制器傳遞過來的Model實例對象,即實現了強類型。強類型的好處之一是類型安全,如果在綁定視圖頁面數據時,寫錯了Model對象的某個成員名,編譯器會報錯;另一個好處是Visual Studio中的代碼智能提示功能。它的調用方式如下:
@model MySite.Models.Product
上面代碼是指在視圖中引入了控制器方法傳遞過來的實例對象,通過在視圖頁面中使用Model即可訪問MySite.Models.Product中的成員:
<span>@Model.ID</span>
這里應該注意的是在引用時,model的m是小寫字母,在頁面中使用時,Model的M是大寫。
1.7.3 帖子列表顯示及發帖模塊實現過程
本模塊使用的數據表:tb_ForumMain、tb_ForumInfoStatus、tb_ForumClassify、tb_ForumArea、tb_UsersByCustomer
1. 實現讀取帖子列表
首先,應該分析加載一個子專區的帖子列表都需要哪些條件,然后根據數據庫表的結構以及頁面需求來制定參數列表。則參照表結構可以確定,主帖列表需要提供一個子專區的ID才能得到所屬的主帖數據。由于頁面中是以列表的形式展示的所屬主帖信息,所以,數據分頁也是必要的功能。這里將分頁的頁面作為Action方法參數,而每頁顯示的數據條數則可以固定寫程序中。
打開Home控制器,在類下面定義MainContent方法,按照需求定義id和CurrentPageindex參數。方法定義如下:
例程26 代碼位置:資源包\TM\01\BBSSiteItem\BBSSite\BBSSite\Controllers\HomeController.cs


數據加載完成后,接著就是設計帖子列表頁面,在Home控制器下創建MainContent.cshtml視圖文件,然后首先定義專區Logo、標題和版主的布局標簽,代碼如下:
例程27 代碼位置:資源包\TM\01\BBSSiteItem\BBSSite\BBSSite\Views\Home\MainContent.cshtml

然后按順序定義子專區各項統計信息的布局標簽,代碼如下:
例程28 代碼位置:資源包\TM\01\BBSSiteItem\BBSSite\BBSSite\Views\Home\MainContent.cshtml

定義數據表格時,需要注意權限的控制。對于有權限的用戶后臺所返回的ViewBag.IsLimit值應為true,所以,在綁定表格標題和數據主體時應使用if判斷ViewBag.IsLimit的權限狀態。布局代碼如下:
例程29 代碼位置:資源包\TM\01\BBSSiteItem\BBSSite\BBSSite\Views\Home\MainContent.cshtml

最后綁定分頁控件,代碼如下:
例程30 代碼位置:資源包\TM\01\BBSSiteItem\BBSSite\BBSSite\Views\Home\MainContent.cshtml

沒有登錄的用戶會顯示如圖1.15所示的列表頁面。登錄后的用戶會顯示圖1.16所示的列表頁面。

圖1.15 未登錄用戶顯示列表

圖1.16 已登錄用戶顯示列表
2. 實現發帖功能
發帖功能只限于登錄的用戶,普通游客是無法進行直接發帖的。通過判斷用戶登錄狀態,設置富文本編輯器的顯示狀態即可實現,編輯器布局標簽如下:
例程31 代碼位置:資源包\TM\01\BBSSiteItem\BBSSite\BBSSite\Views\Home\MainContent.cshtml

富文本編輯器采用第三方控件實現,所以需要引用第三方js文件。然后通過自定義js代碼來控制編輯器的顯示狀態,代碼如下:
例程32 代碼位置:資源包\TM\01\BBSSiteItem\BBSSite\BBSSite\Views\Home\MainContent.cshtml

同時,在頁面中還定義了其他js方法,這些方法實現了數據的提交或更改數據狀態等操作,分別為subForm提交發帖內容、SettingRecommend設置推薦、Examine審核發帖、Delrecord刪除帖子。
用戶登錄后富文本編輯器為可編輯狀態,效果如圖1.17所示。

圖1.17 用戶發帖
3. 讀取精華帖子列表
精華帖子是由有權限的管理人員在眾多帖子中標記為精華帖,因此類帖內容豐富、閱讀價值較高、圖文并茂以及原創等特點,所以被晉升為精華帖。
讀取精華帖主要在主帖列表中查詢標記狀態為精華的帖子,控制器方法代碼定義如下:
例程33 代碼位置:資源包\TM\01\BBSSiteItem\BBSSite\BBSSite\Controllers\HomeController.cs

接著創建Recommend.cshtml視圖文件,文件布局代碼與專區帖子列表大致相同,所以這里就不在列出。運行程序,查看精華帖列表頁,將看到如圖1.18所示的列表頁面。

圖1.18 精華帖列表頁