
3.8 留言簿模块设计
3.8.1 留言簿模块概述
本企业门户网站中加入了留言簿模块,以方便与用户进行沟通。作为企业门户网站的留言簿,通常情况下只有留言、查看留言和回复留言的功能,但对于注册用户,登录之后还可以删除对其留言进行的回复。留言页面运行结果如图3.19所示。
留言详细信息及回复页面运行结果如图3.20所示。

图3.19 留言页面

图3.20 留言详细信息及回复页面
3.8.2 留言簿模块技术分析
实现留言簿模块时,主要用到了第三方组件FreeTextBox,该组件是一个在线文本编辑器,可以对文字及图片内容进行处理,并将数据保存到数据库中。FreeTextBox组件的配置步骤如下:
(1)将FreeTextBox.dll添加到项目中
在“解决方案资源管理器”中用鼠标右键单击项目,在弹出的快捷菜单中选择“添加引用”命令,在弹出的对话框中选择“浏览”选项卡,找到组件存放位置,单击“确定”按钮,系统将自动创建Bin文件夹,并将组件存放到该文件夹中。“添加引用”对话框如图3.21所示。

图3.21 “添加引用”对话框
(2)设置SupportFolder属性
将存放有FreeTextBox组件资源文件的文件夹存放到aspnet_client文件夹中,然后设置SupplorFolder属性为“aspnet_client/FreeTextBox/”。
(3)向页面中添加组件
配置完成后,即可向页面中的指定位置添加FreeTextBox组件。在向页面中添加FreeTextBox组件前,首先需要通过代码注册该组件,在HTML源码顶部添加注册代码如下:

注册完成后,回到设计视图,选中FreeTextBox组件,进行相关属性设置。
(4)写入数据库
完成以上配置后,就可以使用该组件,例如,留言簿模块中通过FreeTextBox组件输入留言内容,并将输入的内容保存到数据库中,关键代码如下:

注意
将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 留言页面主要用到的控件

(2)新建一个基于MasterPage.master母版页的Web页面,命名为LWordInfo.aspx,主要用于实现查看留言详细信息和回复留言的功能,该页面中主要用到的控件如表3.11所示。
表3.11 留言详细信息及回复页面主要用到的控件

(3)在LeaveWord.aspx页面中,首先创建公共类DataOperate和LeaveWordOperate的对象,以便调用其中的方法,代码如下:
例程30 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs

LeaveWord.aspx页面的后台代码中自定义了一个Bind方法,该方法用来从数据库中查找留言信息,并显示在DataList控件中。Bind方法的实现代码如下:
例程31 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs

LeaveWord.aspx页面在加载时,首先设置页面标题和第三方组件FreeTextBox的字体,然后调用自定义方法Bind对DataList控件进行数据绑定。LeaveWord.aspx页面的Page_Load事件代码如下:
例程32 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs

在LeaveWord.aspx页面中单击“留言”按钮,首先判断留言主题或内容是否为空,如果为空,弹出信息提示,否则调用LeaveWordOperate类中的AddLeaveWord方法添加留言信息。“留言”按钮的Click事件代码如下:
例程33 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs

在LWrodInfo.aspx页面的后台代码中自定义了两个方法,分别为Bind方法和deleteInfo方法。Bind方法用来根据接收的留言编号从数据库中查找相关回复信息,并显示在DataList控件中。Bind方法的实现代码如下:
例程34 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs

deleteInfo方法用来根据指定的回复编号删除回复信息,其实现代码如下:
例程35 代码位置:资源包\TM\03\EnterpriseWeb\User\LWordInfo.aspx.cs

LWrodInfo.aspx页面在加载时,首先设置页面标题和第三方组件FreeTextBox的字体,然后根据接收的留言编号,从数据库中查找其详细信息,并显示在相应的Label控件中,最后调用方法Bind显示该留言所对应的回复信息。LWrodInfo.aspx页面的Page_Load事件代码如下:
例程36 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs

在LWrodInfo.aspx页面中单击“回复”按钮,首先判断回复内容是否为空,如果为空,则弹出信息提示,否则调用RevertOperate类中的AddRevert方法添加回复信息,同时调用自定义方法Bind重新显示最新的回复信息。“回复”按钮的Click事件代码如下:
例程37 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs

在LWrodInfo.aspx页面中单击“删除”超级链接,首先判断用户是否登录,如果已经登录,则判断用户是不是该留言的版主或管理员,如果是,则调用自定义方法deleteInfo方法删除指定的回复信息。实现删除回复信息的主要代码如下:
例程38 代码位置:资源包\TM\03\EnterpriseWeb\User\LeaveWord.aspx.cs
