![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=1738938635-vwWNuqrV8FafocalPxcfiy1d2RXKB8qP-0-aaecd3da762095397bdfeb9bfb3d74ad)
图3.19 留言页面
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P152_9238.jpg?sign=1738938635-9iRXQuKS7AVC5qYCzrVy2ESEwrPdUiY4-0-4c2be86b84b66c4058d458f0d26ee147)
图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=1738938635-EPAXRZNP2egjkjpQY0UyAByiTiwrEz8u-0-c3a0287df94ec0747b5f9bebe3bac4a8)
图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=1738938635-xtIREZzqKflV62Al3FOf6EA4VXe92Aot-0-65a6b35684086d5cd407219bb09005b3)
注册完成后,回到设计视图,选中FreeTextBox组件,进行相关属性设置。
(4)写入数据库
完成以上配置后,就可以使用该组件,例如,留言簿模块中通过FreeTextBox组件输入留言内容,并将输入的内容保存到数据库中,关键代码如下:
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P153_33356.jpg?sign=1738938635-XsdxLYkcdqScfcjiJIglgeheG3Tgp5nT-0-ffba5add990a2c9f73a291ade6de9a04)
注意
将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=1738938635-dXvJpxRfQ2OyKoot8bd7UFbwgkarxAqJ-0-d371037fcd1b62e5af3d55ea886a46cb)
(2)新建一个基于MasterPage.master母版页的Web页面,命名为LWordInfo.aspx,主要用于实现查看留言详细信息和回复留言的功能,该页面中主要用到的控件如表3.11所示。
表3.11 留言详细信息及回复页面主要用到的控件
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-T154_33361.jpg?sign=1738938635-R5vaHtVUYe7Y0DDZAriedOfgxh2sFwqf-0-d6cff0fd85874bee1726bbcbb43725bd)
(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=1738938635-tjFfkCJgRQcNzJfmlAOmBR8HlSLpu1cg-0-7ba4e623018b69f4823d55193cbb26bc)
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=1738938635-gZohRZoyaQ5vGL7vtMzt2armSm4KyACY-0-295eb306aea011efd8765a07756bd69b)
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=1738938635-8jEfBGXsjBrcXLnTgeqFxMhECA7zhQFR-0-c5a3d2dbdd86106a63ea51b2e221d7e9)
在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=1738938635-vKllYo7i0BH5XcNfO4KxLqBeemK2g6ZW-0-632e1f5126bdffc3d7537bfd51ef58a8)
在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=1738938635-zXqGpBHKiKAWGvWphahEbIWzXNrpbzm3-0-2a042da397f88690eb22212ccef6b0e3)
deleteInfo方法用来根据指定的回复编号删除回复信息,其实现代码如下:
例程35 代码位置:资源包\TM\03\EnterpriseWeb\User\LWordInfo.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P157_33374.jpg?sign=1738938635-XSzjfO8Z9Ez59NxExchWEaCoJqtcERRY-0-4321c56080fe79ebf7bf081db02061c2)
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=1738938635-BxJW78HZfuLsxInikdMGSzgpxhTgbGnw-0-7abc69e4fcc0d302428cb6676e3eb129)
在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=1738938635-X0OrEhqTYNTkFiSojCvGgVUYlxUxVDDi-0-944179b60959b89fbd9b07e073377a69)
在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=1738938635-8tob58Xfx0rU9XPyrRrXOLIGRS18eF5t-0-433aa8994cb9ae904ebdfc4e2e8a414d)