![ASP.NET项目开发全程实录(第4版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/589/26793589/b_26793589.jpg)
3.8 留言簿模块设计
3.8.1 留言簿模块概述
本企业门户网站中加入了留言簿模块,以方便与用户进行沟通。作为企业门户网站的留言簿,通常情况下只有留言、查看留言和回复留言的功能,但对于注册用户,登录之后还可以删除对其留言进行的回复。留言页面运行结果如图3.19所示。
留言详细信息及回复页面运行结果如图3.20所示。
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P152_9237.jpg?sign=1739668283-hUOcVhs624R2V2NS8QzGOMoKhOJGwXi3-0-8a1d4485d676d622ea17546020823308)
图3.19 留言页面
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P152_9238.jpg?sign=1739668283-7HjIMu2xJL1GRtzSmTNJYOlxpjtv1wmY-0-6b77da598abbad224d97b35206a5b8cf)
图3.20 留言详细信息及回复页面
3.8.2 留言簿模块技术分析
实现留言簿模块时,主要用到了第三方组件FreeTextBox,该组件是一个在线文本编辑器,可以对文字及图片内容进行处理,并将数据保存到数据库中。FreeTextBox组件的配置步骤如下:
(1)将FreeTextBox.dll添加到项目中
在“解决方案资源管理器”中用鼠标右键单击项目,在弹出的快捷菜单中选择“添加引用”命令,在弹出的对话框中选择“浏览”选项卡,找到组件存放位置,单击“确定”按钮,系统将自动创建Bin文件夹,并将组件存放到该文件夹中。“添加引用”对话框如图3.21所示。
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P153_9260.jpg?sign=1739668283-JFXzJ3TlUjWdFPv22ED4WcRjzJoMybZT-0-fa4baadc7c1efd0fb27ac6cbc6fdf389)
图3.21 “添加引用”对话框
(2)设置SupportFolder属性
将存放有FreeTextBox组件资源文件的文件夹存放到aspnet_client文件夹中,然后设置SupplorFolder属性为“aspnet_client/FreeTextBox/”。
(3)向页面中添加组件
配置完成后,即可向页面中的指定位置添加FreeTextBox组件。在向页面中添加FreeTextBox组件前,首先需要通过代码注册该组件,在HTML源码顶部添加注册代码如下:
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P153_33355.jpg?sign=1739668283-CrnYcpTej0dHdQgrTBX7YK9rQPOisvy4-0-5784104271f7373bdfd6f8f93bf20ce7)
注册完成后,回到设计视图,选中FreeTextBox组件,进行相关属性设置。
(4)写入数据库
完成以上配置后,就可以使用该组件,例如,留言簿模块中通过FreeTextBox组件输入留言内容,并将输入的内容保存到数据库中,关键代码如下:
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P153_33356.jpg?sign=1739668283-uiGRl8ZW6by7ZlHP4GGbAH0gKvC838bx-0-9440581f4911c3d15a1f07393a6fb8a1)
注意
将FreeTextBox组件中的内容插入数据库时,需要在Web.Config文件的system.web节下加入<pages validateRequest="false"/>,否则可能会出现异常。
3.8.3 留言簿模块实现过程
本模块使用的数据表:tb_LeaveWord、tb_Revert
留言簿模块的具体实现步骤如下:
(1)新建一个基于MasterPage.master母版页的Web页面,命名为LeaveWord.aspx,主要用于实现查看留言列表和留言功能,该页面中主要用到的控件如表3.10所示。
表3.10 留言页面主要用到的控件
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-T154_33360.jpg?sign=1739668283-HUdvzGfj3nJQWGF862i2gjnsSfx2hOxb-0-d0b2d31aeaeb0b639188a02c3ea2740f)
(2)新建一个基于MasterPage.master母版页的Web页面,命名为LWordInfo.aspx,主要用于实现查看留言详细信息和回复留言的功能,该页面中主要用到的控件如表3.11所示。
表3.11 留言详细信息及回复页面主要用到的控件
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-T154_33361.jpg?sign=1739668283-kN3wgCDC0XRLeSJuk9Lhm8JvQEdtJJlK-0-14b0d1d9bc409af7e140c669eab30d56)
(3)在LeaveWord.aspx页面中,首先创建公共类DataOperate和LeaveWordOperate的对象,以便调用其中的方法,代码如下:
例程30 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P155_33364.jpg?sign=1739668283-qmEewJZNQvG8F6holbMPxb9pjqoSAtL3-0-1a82ff794924f9a81613a6585428225d)
LeaveWord.aspx页面的后台代码中自定义了一个Bind方法,该方法用来从数据库中查找留言信息,并显示在DataList控件中。Bind方法的实现代码如下:
例程31 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P155_33366.jpg?sign=1739668283-5sbpUhG7wFVwpUY3A8BfIoGOGEyWDJGV-0-821d7770b911c3ad7a30795578c2570f)
LeaveWord.aspx页面在加载时,首先设置页面标题和第三方组件FreeTextBox的字体,然后调用自定义方法Bind对DataList控件进行数据绑定。LeaveWord.aspx页面的Page_Load事件代码如下:
例程32 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P155_33368.jpg?sign=1739668283-haTWSE8Cd1p434tc0LknhxYB0x5GJ9bW-0-e9bf74b9be7782b44c8848fa56a0a298)
在LeaveWord.aspx页面中单击“留言”按钮,首先判断留言主题或内容是否为空,如果为空,弹出信息提示,否则调用LeaveWordOperate类中的AddLeaveWord方法添加留言信息。“留言”按钮的Click事件代码如下:
例程33 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P156_33370.jpg?sign=1739668283-mj1q2MsLjrKn60NGgwctKYuMojg260o0-0-370a0222479244779e3cc5603d15fc65)
在LWrodInfo.aspx页面的后台代码中自定义了两个方法,分别为Bind方法和deleteInfo方法。Bind方法用来根据接收的留言编号从数据库中查找相关回复信息,并显示在DataList控件中。Bind方法的实现代码如下:
例程34 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P156_33372.jpg?sign=1739668283-MCqTgLQtlghTBW7qEBRfJqXlJqjwIneN-0-45125e32dcc7f43775b38e3daf09be92)
deleteInfo方法用来根据指定的回复编号删除回复信息,其实现代码如下:
例程35 代码位置:资源包\TM\03\EnterpriseWeb\User\LWordInfo.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P157_33374.jpg?sign=1739668283-pOZY1yrA97ilIG7e4E1Xb7vnqFgfTzZ0-0-734341aab759b555fe4c1896f7d423fc)
LWrodInfo.aspx页面在加载时,首先设置页面标题和第三方组件FreeTextBox的字体,然后根据接收的留言编号,从数据库中查找其详细信息,并显示在相应的Label控件中,最后调用方法Bind显示该留言所对应的回复信息。LWrodInfo.aspx页面的Page_Load事件代码如下:
例程36 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P157_33376.jpg?sign=1739668283-MpbeJ7WgZnvmqwhnTHYuDJ7kX6wxgMNP-0-50c27d750c0d0cb862d270013bd8fb75)
在LWrodInfo.aspx页面中单击“回复”按钮,首先判断回复内容是否为空,如果为空,则弹出信息提示,否则调用RevertOperate类中的AddRevert方法添加回复信息,同时调用自定义方法Bind重新显示最新的回复信息。“回复”按钮的Click事件代码如下:
例程37 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P157_33378.jpg?sign=1739668283-yR9pMzWeNH5z5M9TDyU7ZOWU4huSqIjC-0-864a6b75cebd0bdd2dadf22b5e6fcd94)
在LWrodInfo.aspx页面中单击“删除”超级链接,首先判断用户是否登录,如果已经登录,则判断用户是不是该留言的版主或管理员,如果是,则调用自定义方法deleteInfo方法删除指定的回复信息。实现删除回复信息的主要代码如下:
例程38 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P158_33381.jpg?sign=1739668283-uQGuWvJd5yg1bilq8fPLFjAE1VwQlmIV-0-0258d6d9fc048975e5801d42144d4330)