Asp.Net Forums 2.0 组件类库简要说明

1.ForumsDataProvider类,抽象类(多数据库支持的实现)

是所有数据提供者的基类, 其中静态方法public static ForumsDataProvider Instance (HttpContext context, string providerTypeName, string databaseOwner, string connectionString)方法使用ConstructorInfo.Invoke 方法 实现了不同类型数据库提供者类的调用(执行配置文件中默认数据提供者类的构造函数)
方法说明:
public object Invoke(object[] parameters);
调用具有指定参数的实例所反映的构造函数,并为不常用的参数提供默认值。
参数:
parameters
与此构造函数的参数的个数、顺序和类型(受默认联编程序的约束)相匹配的值数组。如果此构造函数没有参数,则像 Object[] parameters = new Object[0] 中那样,使用包含零元素或空引用(Visual Basic 中为 Nothing)的数组。如果数组中的对象未用值来显式初始化,则该对象将包含该对象类型的默认值。对于引用类型的元素,该值为空引用 (Nothing)。对于值类型的元素,该值为 0、0.0 或 false,具体取决于特定的元素类型。

参考: 模拟Asp.Net Forums 2.0 数据提供者类

2.ResourceManager类 (多语言的实现)

名字空间: namespace AspNetForums.Components
功能:获取支持的语言集,获取指定标识的在语言文件中的值

3.User类(Component目录)

Components/Components/User.cs
用户基本信息类,包含用户的主要属性和一些扩展属性

4.Users类

Components/Users.cs
Users类,封装了所有的用于管理用户的数据操作
注意:
/// <summary>
/// 返回指定用户实例
/// </summary>
/// <param name="userID">用户ID,此ID为0时,只按用户名查找用户,非0时,只按此userID值查找与用户ID匹配的用户</param>
/// <param name="username">用户名</param>
/// <param name="isOnline">是否在线</param>
/// <param name="isCacheable">是否缓存</param>
/// <returns></returns>
private static User GetUser (int userID, string username, bool isOnline, bool isCacheable)

站点设置

5.ForumConfiguration类(Configuration目录)

应用程序配置类与XML配置文件相对应

6.Globals类(Component目录)

站点全局设置类,此类公有属性中包含了获取站点设置类实例(SiteSettings)的方法

7.SiteSettings类(Component目录)

站点设置类,直接与用户相关的设置

8.SiteUrls类(Component目录)

从SiteUrls.config文件加载所有的站点URL

以用户注册实例分析论坛结构

注册用户: 超文本传输协议://localhost/AspNetForums/User/CreateUser.aspx

1.主页面引用自定义控件: Forums:CreateUser
自定义控件(表现层)实现程序: CreateUser..cs,基类SkinnedForumWebControl(实现多风格),提供注册页面的界面及代码(其中界面会调用ResourceManager.GetString方法实现界面的多语言特性),
点击注册按钮,调用Users类(业务逻辑层)的Create方法创建用户,此方法调用ForumsDataProvider类(数据访问层)(实例后(实现多数据库支持)调用SqlDataProvider)的CreateUpdateDeleteUse方法,此方法调用(数据层)数据库存储过程forums_User_CreateUpdateDelete,执行创建用户后返回,最终回到CreateUser自定义控件中,根据创建用户的状态,之后抛出一个自定义异常处理类ForumException的实例,此实例通过产生的错误由Components/HttpModule/ForumsHttpModule.cs类重写的Application_OnError方法处理.使用Globals.GetSiteUrls().Message( exception.ExceptionType,true)方法重定向到处理页面(即类似/Msgs/default.aspx?MessageID=24的页面),由Msgs/default.aspx处理结果显示消息,并显示相关操作.

2.Msgs/default.aspx
页面引用自定义控件Message.cs和跳转菜单自定义控件
Message.cs处理异常返回的MessageID,根据MesseageID,显示不同信息.
用户根据跳转菜单自已处理将要返回的页面.

用户列表: User/ForumMembers.aspx
主页面: User/ForumMembers.aspx
引用自定义控件: ForumMembersView.cs(Controls/Views/ForumMembersView.cs)
更正: Languages/zh-CN/Resources.xml中第740行,更改为:
<resource name = "Utility_CurrentPage_text">第 {0} 页 总共 {1} 页 [共有 {2} 条记录]</resource>
使用Repeater控件循环显示用户列表
数据绑定源为: userSet.Users(为一ArrayList,包含了User对象的列表),
ItemTemplate模板项: 使用了一个自定定义控件<forums:UserImageButtons runat="server" Mode="Search" User='<# (User) Container.DataItem #>’ />, UserImageButtons服务器控件,提供了根据Mode和User属性显示特定图片链接的功能.

9.ForumContext类 自定义的论坛上下文

Components/Components/ForumContext.cs 2004年6月15日(venjiang)
1. 从QueryString中获查询字符串的值并把它做为一个int型数返回
2. 重定向到自定义的错误异常消息
3. 应用程序上下文,应用程序路径名称,论坛列表,用户实例,用户ID,用户名称,贴子ID,论坛ID,页索引,角色ID主题ID,返回URL,站点统计…

10.Formatter类 格式化类

Components/Components/Formatter.cs
提供了应用程序中各项内容信息的格式化操作.

11.Forums类 包含了论坛运行的方法

Components/Forums.cs

12.ForumException类 自定义异常类

Components/Components/ForumException.cs
两个成员变量: ForumExceptionType exceptionType; 自定义异常类型枚举
CreateUserStatus status; 创建用户创建枚举
该异常类继承至ApplicationException类,并重写Message属性和GetHashCode方法

13.JumpDropDownList类 跳转菜单[自定服务器控件] [可通用]

Controls/Navigation/JumpDropDownList.cs
JumpDropDownList自定义服务器控件,实现跳转菜单功能,继承至DropDownList类.

14.UserPermissions类 用户权限列表[自定义服务器控件]。

目录: Controls/User/UserPermissions.cs
描述: UserPermissions类,用户权限列表,继承至PlaceHolder.
PlaceHolder类,存储 Web 页上动态添加的服务器控件的容器,
用户权限列表获取当前用户在当前论坛的权限列表,如下图:
您 能 在此版上传附件
您 能 在此版发表新主题
您 能 在此版回复主题
您 能 在此版删除您发表的帖子
您 能 在此版修改您发表的帖子
您 能 在此版发起投票
您 能 在此版参与投票
该版的帖子统计功能 禁用
该版帖子 不需要审核

15.ThreadView类 主题列表[自定义服务器控件]

目录: Controls/Views/ThreadView.cs
描述: ThreadView类,继承至SkinnedForumWebControl,
应用于ShowForum.aspx中主内容,显示主题列表.

16.RssLink类 RSS链接[自定义服务器控件]

目录: Controls/Utility/RssLink.cs
描述: RssLink类继承至HtmlAnchor,创建一个图片链接,图示:

17.RssFeed类 RSS控件[自定义服务器控件]

目录: Controls/Utility/RssFeed.cs
描述: RssFeed控件根据实际情况调用Rss.GetForumRss方法呈现XML.

18.Rss类 RSS实际处理类

目录: Components/Rss.cs
描述: 公共方法:
public static string GetForumRss (int forumID, ThreadViewMode mode)
public static string GetForumRss (int forumID, ThreadViewMode mode, int count)
根据论坛ID,主题模式,RSS流大小(不提供则使用默认值)获取指定论坛的RSS文档

19.RoleIcons类 角色图标显示 [自定义服务器控件]

目录: Controls/User/RoleIcons.cs
描述: RoleIcons类,实现角色图标的显示,继承至PlacdHolder类.
PlacdHolder类,表示 HTML 元素、文本和 ASP.NET 页中不需要在服务器上处理的任何其他字符串。
重写呈现方法,根据当前用户的角色呈现不同的图像链接.

20.UserAttribute类 [自定义服务器控件]

目录: Controls/User/UserAttribute.cs
描述: 继承至PlacdHolder类,重写呈现方法,
根据当前用户,指定的用户属性和格式字符串输出类似如下:
注册: 2004年6月16日, 星期三
河北省秦皇岛市
发 贴: 16

21.ForumRepeater类 [自定义服务器控件]

目录: Controls/ForumRepeater.cs
描述: ForumRepeater,继承至Repeat类, 实现论坛的列表显示,自己实现绑定,无须再绑定.

以Login.aspx页面为例,探讨Asp.Net Fourms 2.0 的身份验证机制和角色控制

login.asp主页面,界面及逻辑实现主要由自定义控件login.cs实现
login.cs(Controls/Login.cs)
输入用户名和密码后,如果都正确(其它情况暂不考虑),首先检查站点设置是否允许登录,如果站点设置不允许登录,则检查当前用户是否为管理员或版主,如果是则确认登录,否则,抛出拒绝登录异常.之后使用FormsAuthentication.SetAuthCookie(userToLogin.Username, autoLogin.Checked)方法为当前用户创建身份验证票据,然后返回来源URL.

22.WhoIsOnline类 [自定义服务器控件]

目录: Controls/WhoIsOnline.cs
基类: SkinnedForumWebControl
描述: 用户在线信息

23.DisplayLegendForum类 [自定义服务器控件]

目录: Controls/Skins/DisplayLegendForum.cs
基类: SkinnedForumWebControl
描述: 论坛图例

24.SiteStats类 [自定义服务器控件]

目录: Controls/SiteStats.cs
基类: SkinnedForumWebControl
描述: 论坛统计信息

25.SiteStatistics类, [组件]

目录: Components/Components/SiteStatistics.cs
基类: SkinnedForumWebControl
描述: 论坛统计信息类
主要方法: LoadSiteStatistics(HttpContext context, bool cacheable, int cacheTimeInHours)
从数据库中获取最新统计信息表
主要存储过程: forums_Site_Statistics
-- 需要更新站点统计信息吗?
DECLARE @LastUpdate datetime --最后更新时间
DECLARE @DateWindow datetime --

-- 获取最后更新时间,如果不存在,使用1/1/1797替代
SET @LastUpdate = ISNULL((SELECT MAX(DateCreated) FROM forums_statistics_Site), '1/1/1797')
-- 指定需要更新的时间
SET @DateWindow = DATEADD(n, -@UpdateWindow, GetDate()) *n,原为hh,将更新列表时间小时改为分钟

if (@LastUpdate < @DateWindow)
BEGIN
exec forums_system_UpdateSite
END

管理导航用户控件

Web/Themes/AdminNavigation.ascx
错误: Logo图片, <a href="../"><img src="../Themes/default/images/title.gif" border="0" /></a>
更正: <a href="<%= Globals.ApplicationPath %>">
<img src='<%= String.Format("{0}/Themes/default/images/title.gif",Globals.ApplicationPath) %> ' border="0" /></a>

系统设置页面SiteSettings.aspx [页面]

目录: Web/Admin/SiteSettings.aspx
描述: 站点全局设置
说明: 使用MP技术,所属页面为Themes/AdminMasterPage.ascx.,主显示内容未使用自定义控件技术,使用标准Page代码后置方式.

版块管理ManageForums.aspx [页面]

目录: Web/Admin/ManageForums.aspx
描述: 管理和创建新版块及讨论组.
说明: 使用MP技术,所属页面为Themes/AdminMasterPage.ascx.,主显示内容未使用自定义控件技术,使用标准Page代码后置方式.,
调整论坛顺序的图形按钮调用Forums.ChangeForumSortOrder(selectedForum, false)
调整论坛组顺序的图形按钮调用ForumGroups.ChangeForumGroupSortOrder(selectedForumGroup, false)方法,根据第二参数的真假,提升或降低排序.(两访求调用相应存储过程,以执行数据库的更新)

26.ForumGroups.cs基本类 [组件类]

目录: Components/Components/ForumGroup.cs
描述: 论坛组的基本类
说明: 实现了Icomparable接口,以用于论坛组排序的比较(public int CompareTo(object value));

27.ForumGroups.cs操作类 [组件类]

目录: Components/ForumGroups.cs
描述: 论坛组相关的操作方法
相关: forums_ForumGroup_CreateUpdateDelete存储过程

28.Forum.cs基本类 [组件类]

目录: Components/Components/Forum.cs
描述: 论坛的基本类
说明: 实现了Icomparable接口,以用于论坛组排序的比较(public int CompareTo(object value));

29.Forum.cs操作类 [组件类]

目录: Components/Forums.cs
描述: 论坛组相关的操作方法
相关:

30.Avatar 自定义头像 [组件类]

目录: Components/Components/Avatar.cs
描述: 自定义头像
相关:

31.ForumPermission论坛权限处理类 [组件类]

目录: Components/Components/ForumPermission.cs
描述: 论坛权限处理
相关:

32.Posts [组件类]

目录: Components/Posts.cs
描述: 论坛帖子管理
相关: 方法GetTopNPopularPosts 对应存储过程: forums_GetTopNPosts,在数据库中未找到
方法GetTopNNewPosts对应存储过程: forums_GetTopNPosts, 在数据库中未找到
方法GetAllMessages对应存储过程: forums_GetAllMessages, 在数据库中未找到

33. PostAttachment [组件类]

目录: Components/Components/PostAttachment.cs
描述: 附件类
相关: PostAttachment

34. Email [组件类]

目录: Components/Components/Email.cs
基类: MailMessage
描述: Email模板类
相关: EmailType枚举类型决定用户要发送Email模板的类型

35.Emails [组件类]

目录: Components/Emails.cs
基类: MailMessage
描述: Emails类,这个类在用户发生重要的事件时响应并发送邮件.
相关: EmailType枚举类型决定用户要发送Email模板的类型
数据库: 对应操作表:forums_EmailQueue
EmailID使用了uniqueidentifier 数据类型的列,默认值使用NEWID()(MsSQL自带)函数创建.

36.ModeratedForum [组件类]

目录: Components/Components/ModeratedForum.cs
基类: Forum
描述: 论坛管理(待查)
相关:

37.ModerationAuditSummary [组件类]

目录: Components/Components/ModerationAudit.cs
描述: 管理审核摘要(待查)
相关:

38.Thread [组件类]

目录: Components/Components/Thread.cs
基类: Post
接口: Icomparable
描述: 主题基本类
相关: 此类包含一个成员字段: static SortThreadsBy sortBy, SortThreadsBy枚举主题排序类型,Thread类使用了枚举名和此枚举一样的名称,且Thread类本身包含一个SortThreadsBy枚举,此枚举待查

39.ThreadSet.cs [组件类]

目录: Components/Components/ThreadSet.cs
描述: 主题数组列表分解为标准主题数组和公告数组列表
相关:

40.Transforms [组件类]

目录: Components/Components/Transforms.cs
描述: 主题贴子内容预转化,提供对帖子内容的所有格式化过滤等操作.
相关:

41.Censor [组件类]

目录: /Components/Components/Censor.cs
描述: 帖子内容关键字过滤
相关:

42.Smilies [组件类]

目录: Components/Smilies.cs
描述: 笑脸(表情)图标操作, 实现了表情符号记录的创建/更新/删除/获取操作
相关: 数据库存储过程, forums_Smiley_CreateUpdateDelete

43.Smiley [组件类]

目录: Components/Components/Smiley.cs
接口: IComparable
描述: 笑脸(表情)基本类,有一成员字段_bracketSafe和公有方法IsSafeWithoutBrackets()待查
相关:

44.Style [组件类]

目录: Components/Components/Style.cs
描述: 待查
相关:

45.UserCookie [组件类]

目录: Components/Components/UserCookie.cs
描述: 将用户的最后访问时间,用户论坛选项(排序,过滤等),隐藏论坛组等进行cookie的保存,提取操作.
相关: 用户论坛选项格式为:[SortBy]:[SortOrder]:[DateFilter]:[HideReadPosts]:[UserFilter]

46.VoteResultCollection [组件类]

目录: Components/Components/VoteResultCollection.cs
基类: Hashtable
描述: 通过索引器获取Voteresult
相关:

47.VoteResult [组件类]

目录: Components/Components/VoteResult.cs
描述: 投票结果基本类
相关:

48.VoteDetails [组件类]

目录: Components/Components/VoteDetails.cs
描述: 投票详细资料
相关:

49.ForumPermissions [组件类]

目录: Components/ForumPermissions.cs
描述: 论坛权限管理,不同于windows的权限管理,角色在不同的论坛可以拥有不同的访问权限,权限管理以论坛为单位,不以角色为单位.
相关:

50.Moderate [组件类]

目录: Components/Moderate.cs
描述: 论坛管理
相关:

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值