1.相关数据库定义
根据需求,该功能模块相关的Demo8-3.mdf数据库中数据表Users用于保存网站用户信息;Messages用于保存聊天内容。
Users数据表和Messages数据表定义如表8-13、表8-14所示。
表8-13 Users数据表定义
表8-14 Messages数据表定义
2.功能的设计实现
(1)设计前准备
使用VS2010新建网站,将Demo8-3.mdf数据库文件复制到站点App_Data目录下。在网站根目录下创建两个新的文件夹,分别命名为:Images、ChatRoom。将设计网站界面所需的图片素材放置在Images文件夹中;在ChatRoom文件夹中创建一个Web窗体文件,重命名为Default.aspx,然后再添加一个web.config文件;最后在网站根目录下创建一个Web窗体文件,重命名为Login.aspx文件。
(2)任务的功能实现。
本学习任务学习情境中描述的聊天室功能的实现参见“教学案例\Unit08\Demo8-3\ChatRoom”文件夹中的Default.aspx页面,其设计实现说明如下:
1)页面设计。
聊天室界面可分为3个区域,一个是在线用户显示区,该区域每经过30秒会自动刷新以显示最新在线用户列表;一个是聊天内容显示区,该区域每经过1秒也自动刷新以显示最新聊天内容;最后一个是聊天内容发送区,当前登录用户可以在该区域对聊天室内所有或某个在线用户发送聊天内容。首先在页面顶端设置一个ScriptManager控件,然后在这三个区域分别设置一个UpdatePanel控件,命名为:UPOnline、UPMs和UPSend。在UPOnline和UPMs控件中分别设置一个Timer控件和一个DataList控件,Timer控件用于控制这两个区域自动刷新的时间间隔;DataList控件分别用于显示在线用户昵称和聊天室最新的聊天内容。在UPSend控件中设置一个Label控件用于显示当前登录用户的聊天对象;设置一个TextBox控件用于输入聊天内容;设置一个Button控件用于发送聊天内容。此外,当用户登录时会获得一个临时身份验证票证以证明该用户的合法身份,当退出聊天室时,需手动将该票证取消,所以在页面上设置一个LinkButton控件用于实现取消票证并返回登录界面。
打开Default.aspx文件,使用表格进行合理布局,如图8-7所示,在页面适当的位置分别放置好上述Web服务器控件。
图8-7 某网站聊天室功能模块界面设计
聊天室界面使用控件及属性设置如表8-15所示。
表8-15 Default.aspx页面中控件相关属性设置
DLOnline控件项模板中LinkButton控件属性设置如表8-16所示。
表8-16 DLOnline项模板中控件相关属性设置
DLMs控件项模板中Label控件属性设置如表8-17所示。
表8-17 DLMs项模板中控件相关属性设置
2)配置站点访问权限。
①设置站点访问验证方式。
打开站点根目录下的Web.Config文件,添加<authentication>配置节点,修改站点访问验证方式为“窗体验证”,同时设置默认导向的验证页面。配置节点代码如下。
②设置文件目录访问权限。
打开ChatRoom文件夹下的Web.Config文件,添加<authorization>配置节点,修改该文件夹访问权限为“拒绝匿名用户”。配置节点代码如下。
(www.xing528.com)
3)事件响应。
①自定义方法。
不管是页面初载或局部刷新发生时都需要查询数据库表将在线用户记录或最新聊天记录检索出来,并实现数据绑定。为此分别定义了GetOnlineUsers()和GetMessages()方法用于从数据库中检索出相应记录绑定到数据控件上,方便页面内其他事件调用。
➢GetMessages()方法的定义如下:
➢GetOnlineUsers()方法的定义如下:
②在线用户和最新聊天内容显示。
当用户进入聊天室页面时,DLOnline需显示在线用户列表;DLMs需显示最新聊天信息;LbUser需显示当前登录用户昵称。因此,须调用Default.aspx页面的Page_Load事件。
➢Default.aspx页面的Page_Load事件如下:
③在线用户区和最新聊天区局部刷新。
在线用户区和最新聊天区的局部刷新分别由TOnline和TMs控件触发。因此,须分别响应TOnline和TMs控件的Tick事件。
➢TOnline控件的Tick事件如下:
➢TMs控件的Tick事件如下:
④注销身份验证票证。
为实现单击“退出”按钮能注销当前登录用户所使用的身份验证票证并返回登录页面,须响应LBExit控件的Click事件。
➢LBExit控件的Click事件如下:
⑤获取聊天对象。
为实现单击DLOnline中某个在线用户能将该昵称显示在LbReceive控件中,须响应DLOnline控件的ItemCommand事件。
➢DLOnline控件的ItemCommand事件如下:
⑥发送聊天内容。
为实现单击“发送”按钮能实现将新的聊天内容添加入最新聊天内容中,须响应BtSend控件的Click事件。
➢BtSend控件的Click事件如下:
至此,本学习任务描述的聊天室基本完成,用户登录模块功能相对简单,可自行查看本案例根目录文件夹中的Login.aspx页面,此章节不再详述。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。