1.模块功能设计
该子模块页面文件为Default.aspx,其主要功能如下:
依据登录的用户角色不同,其内容有所区别。若登录的角色是管理员和教师,包括推荐课程列表和所有课程列表;若登录的角色是学生,另外还包括已获授权的课程列表和正在等待处理的课程访问授权请求列表。
对于上述不同的课程列表,如果用户有该课程访问权限,则进入音、视频课堂,否则询问是否发出该课程访问授权请求(依据学号和课程编号发出指定课程的访问请求。若已经获得授权、或者已存在待处理或有被拒绝的请求将拒绝学生重复请求)。
在等待处理的课程访问授权请求列表中,在请求还没获得认可前,学生视情况可放弃自己的请求。
学习社区主页页面的运行效果如图9-7所示。

图9-7 学习社区主页Defalut.aspx页面运行效果
(2)音、视频课堂
该子模块页面文件为List.aspx,其主要功能如下:
可选择具有访问权限课程,然后列出该课程已经指导教师审核通过的语音或视频列表。在语音或视频列表中,若是管理员和教师可无限制下载音、视频资料,学生只有在积分足够时才可以下载具体的语音或视频资料。另外在语音或视频列表中点击试听或播放按钮,可启动音、视频资料播放功能。
音、视频课堂页面运行效果如图9-8所示。

图9-8 音视频课堂List.aspx页面运行效果
(3)音、视频资料播放
该子模块页面文件为AVPlay.aspx,其功主要能如下:
包括音、视频详细资料显示及其播放、下载和评论等功能。若是管理员和教师可无限制下载、播放音、视频资料;若学生积分不够则禁止播放或下载。音、视频资料播放页面运行效果如图9-9所示。

图9-9 音视频资料播放AVPlay.aspx页面运行效果
(4)音、视频资料发布
包括音、视频发布功能,其页面运行效果如图9-10所示。

图9-10 音视频资料发布Upload.aspx页面运行效果
2.页面功能实现
囿于篇幅,本书仅对学习社区主页Default.aspx页面和音、视频课堂List.aspx页面的实现作简要说明,其他页面的实现请参阅本书配套综合案例。
(1)学习社区主页页面Default.aspx
1)界面设计。
该页面由绑定到ObjiectDataSource数据源控件的推荐课程列表、所有课程列表、学生获得授权课程列表和学生课程请求列表等4个部分组成。
①推荐课程列表:通过绑定objCourseTop、名为dlstCourse的DtatList控件实现。
②所有课程列表:通过绑定到数据源objCourse、名为gvCourseList的GridView控件实现。
③学生获得授权课程列表:通过绑定到数据源objCourseACL、名为gvCourseListACL的GridView控件实现。
④学生课程请求列表:通过绑定到数据源objCourseACL0、名为gvRequestList的GridView控件实现,此GridView控件采用了模板列技术。
限于篇幅,其控件的详细设置请比照上述Login.aspx界面设计,本书将不对上述每个控件设置做详细说明。
2)页面程序逻辑。
页面程序逻辑包括页面中数据源控件绑定的类及其方法和一系列页面及其控件的事件响应。
①数据源控件的绑定。
页面中数据源控件绑定的类及其方法如表9-12所示。
表9-12 社区主页页面Default.aspx中各数据源控件设置

●业务逻辑层。其代码在Opt_Course.cs类文件中,具体如下:


●数据访问层。其代码在DB_Course.cs类文件中,具体如下:



②Page_Load事件函数。
用于初始化学生获得授权课程列表和学生课程请求列表。当登录的用户角色是管理员或教师时,该二列表不可见。其事件函数具体代码如下:

③dlstCourse_ItemCommand事件函数。
响应站长推荐课程列表中课程主题图片按钮的Click事件。如果是学生(因为管理员和教师对任何课程均有权限)、并且对该课程有访问权限,则打开该课程音、视频课堂List.aspx页面,否则打开该课程授权请求页面RequestYorN.aspx。
●事件函数。


函数中判断学生对特定课程是否有访问权限通过调用业务逻辑层中Opt_Course类的CourseACLYorN(string StuID,string CourseID)方法实现。
●业务逻辑层。其代码在Opt_Course.cs类文件中,具体如下:

●数据访问层。其代码在DB_Course.cs类文件中,具体如下:
(https://www.xing528.com)
④gvCourseList_SelectedIndexChanged事件函数。
响应所有课程列表中“进入”按钮的Click事件。如果是学生(因为管理员和教师对任何课程均有权限)、并且对该课程有访问权限,则打开该课程音、视频课堂List.aspx页面,否则打开该课程授权请求页面RequestYorN.aspx。事件函数的具体代码实现如下:

与dlstCourse_ItemCommand事件函数一样,该函数同样使用到业务逻辑层中Opt_Course类的CourseACLYorN(string StuID,string CourseID)方法。具体代码参见上述dlstCourse_ItemCommand事件中业务逻辑层和数据访问层的代码实现。
⑤gvCourseListACL_SelectedIndexChanged事件函数。
响应学生获得访问授权的课程列表中“进入”按钮的Click事件,打开该课程音、视频课堂List.aspx页面。事件函数的具体代码实现如下:

(2)音、视频课堂页面List.aspx
1)界面设计。
该页面由一个选择有访问权限课程的下拉列表、一个选择音、视频类型的下拉列表和一个显示特定课程、特定类型音、视频资料列表等3个部分组成。
①有访问权限课程选择下拉列表:登录用户的角色不同,可选择的课程不同。管理员和教师可选择所有课程,而学生则只能选择可访问的课程。前者选择有访问权限的课程的下拉列表的数据源来自于Course数据表,后者来自于课程访问控制数据表CourseACL及其关联的Course数据表。为此前者绑定到ObjectDataSource控件objCourse,后者则应绑定到同样是ObjectDataSource控件的objCourseACL。
②音、视频类型下拉列表:在设计期间指定“语音课堂”和“视频课堂”两个选择项。
③显示音、视频资料列表:通过绑定到数据源ObjAVList的GridView控件gvAVLis实现,此GridView控件采用了模板列技术。同样的,本书将不对上述每个控件设置做详细说明。
2)页面程序逻辑。
页面程序逻辑包括页面中数据源控件绑定的类及其方法和一系列页面及其控件的事件响应。
①数据源控件的绑定。
页面中数据源控件绑定的类及其方法如表9-13所示。
表9-13 音、视频课堂List.aspx中各数据源控件设置

●业务逻辑层。上述Opt_Course类及其StuACLCourse方法和GetCourse方法的代码在Opt_Course.cs类文件,并且已经在Default.aspx数据源控件绑定的业务逻辑层代码实现中描述。Opt_AVdio类及其ListAV方法则在Opt_AVdio.cs类文件中,具体如下:

●数据访问层。DB_Audio类及其ListAV方法代码在DB_Audio.cs类文件中,ListAV方法的具体如下:


②Page_Load事件函数。
响应此事件函数的目的是初始化选择有访问权限的课程的下拉列表。默认情况下该下拉列表是绑定到objCourse数据源控件的,若用户的角色是学生,那么此函数将数据源控件切换为objCourseACL。其事件函数具体代码如下:

③dropCourse_DataBound事件函数。
响应dropCourse课程选择列表控件DataBound事件,使得下拉列表在绑定过程中自动将当前课程(即在前述Default.aspx点击进入本页面的课程)设为当前项。其事件函数具体代码如下:


④gvAVList_RowDataBound事件函数。
响应gvAVList音、视频资料列表控件的DataBound事件,使得在该控件在绑定过程中根据选择的音、视频资料类型决定显示“语音试听”图片按钮还是“视频播放”图片按钮,同时,如果用户角色是学生,则根据该生的积分情况决定下载按钮是否处于激活状态。
●事件函数。


学生的积分由业务逻辑层中Opt_User类的GetStuPoint(string Stuid)方法获取。
●业务逻辑层。Opt_User类的GetStuPoint(string Stuid)方法代码实现参见Opt_User.cs文件,具体实现如下:

●数据访问层。DB_User类的GetStuPoint(string Stuid)方法代码实现参见DB_User.cs文件,具体实现如下:

⑤gvAVList_RowCommand事件函数。
响应音、视频资料列表中“下载”图像按钮的单击事件,下载当前音、视频资料。
为了防止用户不经List.aspx就直接访问AVPlay.aspx而导致绕过积分验证访问音、视频资源,Audio和Vedio文件夹设置了只有角色“DownAndPlay”才有访问权限,而且用户只有响应了gvAVList_RowCommand事件函数才能附加到“DownAndPlay”角色,下载或播放后则立即退出“DownAndPlay”角色。
附加和退出“DownAndPlay”角色分别由业务逻辑层中OPT_User类的AddToRole方法和RemoveFromRole方法完成。
Audio和Vedio文件夹Web.comfig文件关于URL授权的设置如下:

●事件函数。

●业务逻辑层。上述事件函数涉及业务逻辑层Opt_Course.cs文件中Opt_Course类的AddCourseHit方法、Opt_AVdio.cs文件中Opt_AVdio类的AddAVPoint方法和Opt_User.cs文件中Opt_User类的SubtractStuPoint与AddToRole方法,具体代码实现如下:


●数据访问层。上述业务逻辑层使用的数据访问层方法的实现分别在Opt_Course.cs文件的DB_Course类、DB_AVdio.cs文件的Opt_AVdio类和DB_User.cs文件的Opt_User类中,具体代码实现如下:


⑥gvAVList_SelectedIndexChanged事件函数。
响应音、视频资料列表中“播放”图像按钮的单击事件,进入音、视频资料播放页面AVPlay.aspx,以播放、评论和下载当前音、视频资料。其事件函数如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
