![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=1738811028-QcEiCViIu0ZO50LADagCfngZ7BsLQcMQ-0-b03974bea1a25c04b58da497366feb95)
图3.19 留言页面
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P152_9238.jpg?sign=1738811028-h7b0lTsIwnWnTcqvMlY4t9AWMNuSdQnB-0-c96c9860c399987e7ba82053d6aba429)
图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=1738811028-nRmvzP7pYNWkqV7WE1YntY6rVGJzP7yg-0-106f4310334483b53add83b299998869)
图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=1738811028-7WnfR5J3GSpM4j5qOngoHHIa8KK90fRW-0-55e172acd18b2ec45743af7cad8cbbbf)
注册完成后,回到设计视图,选中FreeTextBox组件,进行相关属性设置。
(4)写入数据库
完成以上配置后,就可以使用该组件,例如,留言簿模块中通过FreeTextBox组件输入留言内容,并将输入的内容保存到数据库中,关键代码如下:
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P153_33356.jpg?sign=1738811028-Z3DseZdTC3KtyDAeMth0kp2eM8dX3WSs-0-9f0dad12578e4038185fad60087ed7f9)
注意
将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=1738811028-yJgsfvcSpbYX79YJbRT1jCFFS2x6vpq5-0-da1cd057b9358b1feae9e30344367321)
(2)新建一个基于MasterPage.master母版页的Web页面,命名为LWordInfo.aspx,主要用于实现查看留言详细信息和回复留言的功能,该页面中主要用到的控件如表3.11所示。
表3.11 留言详细信息及回复页面主要用到的控件
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-T154_33361.jpg?sign=1738811028-dlZ22KdFHaOwJLzoLPGUzhXgYKHhTedc-0-54513883328eeb4df77ae016cddf53c2)
(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=1738811028-DlVfYt6akkzUkUcnycK6l3g2LkW4d2ZO-0-f5f08ad9cb2b58a2d1656f0776984b9c)
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=1738811028-oLARZZ0cPL9JX9ED9qrWcFYRHHaNkwRS-0-2b95f4dba9d195dd48f770456f5194df)
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=1738811028-SPG7LJ42MAMx1Dylht9auZg4PIIytlyd-0-70cda8b9e307094d601d81322d081d9b)
在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=1738811028-xgpN9qEApVbJI6ehqynz8YhpaF2yquPh-0-345db721fdeea98fe0d3e6a6cb423ed2)
在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=1738811028-WrphA3TbsdAYHPHPoKOrhJUtInARUI1p-0-7e02913aba7ec70f5fb486d48b57897e)
deleteInfo方法用来根据指定的回复编号删除回复信息,其实现代码如下:
例程35 代码位置:资源包\TM\03\EnterpriseWeb\User\LWordInfo.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P157_33374.jpg?sign=1738811028-8UoLWZXdcxOFKtGBrzCP1hI6AQ3PO3tF-0-35df744aab874d284a87aa237404536b)
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=1738811028-l0Br5fxfQ06EX5B6CUAsCEOGiUeirNJQ-0-df83110b227372b14f3c5806213c7f17)
在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=1738811028-6CL7yMPcjpky35pfEoM8p8NF8ZRdyUR0-0-e5ddf371fdb141079aeba0f92bb016e1)
在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=1738811028-RjzFSKS1fy9czfqm86dChKlM9fxPq9Kk-0-5727e73810fd91b937df48cdca725f27)