宝玉的blog

专注于web开发技术
随笔 - 81, 评论 - 1563, 引用 - 157

导航

关于


目前致力于ChinaCommunityServer的开发。

msn: junminliu(at)msn.com

标签

每月存档

最新留言

  • re:发布一个爱心小软件——网页抓图
    <p>你好 我看了你的代码 不错啊,请问在asp.net C#中 没有了webbrowser 该怎么实现?</p> <p><a href="http...
    by weblogical(注册) on 2009/9/9 17:22:55
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:37
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:31
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:30
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:29
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Silverlight中,防止ComboBox抢焦点
    <p>我是初学者,您已经写了一个 组件上传的功能 。。我在2008下测试通过,,,但是弄2005测试的时候 发现 progress.aspx.cs页面的</p> <p&...
    by jxh12345j(注册) on 2009/4/7 8:55:12
  • ufnnutdh - Google Search
    ufnnutdh - Google Search
    by (匿名) on 2008/10/27 17:44:45
  • veysaync - Google Search
    veysaync - Google Search
    by (匿名) on 2008/10/5 5:20:49
  • mzgmhgio - Google Search
    mzgmhgio - Google Search
    by (匿名) on 2008/9/22 23:34:49
  • rhmhnyma - Google Search
    rhmhnyma - Google Search
    by (匿名) on 2008/9/22 7:48:44
  • re: 发布一个爱心小软件——网页抓图
    Maxthon应该有这个功能
    by passos(匿名) on 2008/7/21 20:05:23

广告

 

对于类似于CommunityServer(简称CS)这样如此庞大的系统,很多朋友苦于无法入手,根据我对CS研究的一点经验,感觉从具体实例入手是最简单直接的。因此,我首先以注册新用户这个实例来向大家一步步揭开CS的神秘面纱。

1. 准备工作

本文以CCS(China Community Server,基于CS二次开发)为例,下载地址: http://www.communityserver.cn/builds,在压缩包里面有完整的源码和安装说明。

1.1 安装CCS
按照安装说明安装好CCS(如果安装过程中有问题可以到http://www.communityserver.cn上提问),本文以CCS安装在http://localhost/ccs为例。

1.2 打开源码
压缩包解压后,在src目录下就是所有的源码,先确认已经将http://localhost/ccs这个虚拟目录指向了src\web目录(如果您使用的是其它虚拟目录,请事先用文本编辑器修改src\Community Server.sln和src\web\CommunityServerWeb.csproj.webinfo其中的http://localhost/ccs为您的虚拟目录地址),不出意外,就可以用VS2003打开src\Community Server.sln了。

1.3. 页面效果
通过http://localhost/ccs/User/CreateUser.aspx可以访问注册页面,在注册页面,用户可以输入注册的基本信息,例如登录帐号、昵称、Email、密码等。在点击提交按钮后首先会对提交数据的合法性校验,例如:登录帐户是否为空、Email是否合法、两次输入密码是否一致等。数据合法性校验通过后,要检测是否已经存在相同的登录帐户、昵称和Email,最后就是将注册的数据提交到数据库,并提示用户已经注册成功。

3. 技术分析

3.1 分析页面源码
在VS2003中,在CommunityServerWeb项目中,展开User目录,打开CreateUser.aspx文件,切换到HTML视图,代码如下:
<%@ Page SmartNavigation="False" Language="C#"  enableViewState = "false" %>
<%@ Register TagPrefix="CS" Namespace="CommunityServer.Controls" Assembly="CommunityServer.Controls" %>
<%@ Register TagPrefix="CSD" Namespace="CommunityServer.Discussions.Controls" Assembly="CommunityServer.Discussions" %>
<%@ Import Namespace="CommunityServer.Galleries.Components" %>
<%@ Import Namespace="CommunityServer.Blogs.Components" %>
<%@ Import Namespace="CommunityServer.Components" %>

<CS:ContentContainer runat="server" id="MPContainer" ThemeMasterFile = "ForumMaster.ascx" >
    <CS:Content id="BodyContentRegion" runat="server">
  <CS:CreateUser runat="server" />
 </CS:Content>
</CS:ContentContainer>

3.2 自定义控件
没有我们熟悉的文本输入控件等,只有几个自定义控件标记,如果有Asp.Net的自定义控件基础知识,那么应该可以想到,这里用的是自定义控件。顺便温习一下Asp.Net自定义控件,首先,对于CS:ContentContainer标签,根据标签中的CS前缀,我们在页首的申明上找到TagPrefix="CS"的Register:
<%@ Register TagPrefix="CS" Namespace="CommunityServer.Controls" Assembly="CommunityServer.Controls" %>
根据其中的Namespace属性的值和Assembly属性的值我们可以知道,这里的CS:ContentContainer标签对应的源码就是在CommunityServer.Controls.dll中的CommunityServer.Controls.ContentContainer类。CommunityServer.Controls.dll实际上就是由解决方案中的CommunityServerControls项目生成的。

对于CS:ContentContainer和CS:Content是CS中用的模版控件,其实在Asp.Net2.0中已经内置了这种模版控件。CS在这里是用的一个第三方的模版控件:MetaBuilders.WebControls.MasterPages.dll,限于篇幅,在这里我就不做详细介绍。还是看看我们今天的主角:
<CS:CreateUser runat="server" />
根据上面的知识,我们可以直接从CommunityServerControls项目中找到CommunityServer.Controls.CreateUser类(一个小技巧就是在VS2003中切换到类视图,可以很方便找到该类对应的.cs文件),位于User目录下的CreateUser.cs文件。

3.3 TemplatedWebControl
打开源码(public class CreateUser : SecureTemplatedWebControl),可以知道CreateUser继承自SecureTemplatedWebControl类,那我们先看看SecureTemplatedWebControl类,SecureTemplatedWebControl类很简单,就是检查一下是不是需要使用Https连接,SecureTemplatedWebControl类又是继承自TemplatedWebControl类。其实在CS中,大部分类似于注册页面这样的控件都是继承自TemplatedWebControl,我们先来分析一下TemplatedWebControl的作用。


未完,待续……

 

打印 | 张贴于 2005-08-27 19:09:00 | Tag:Community Server

留言反馈

#Community Server开源项目系列文章 编辑
Community Server开源项目系列文章
2008-01-10 11:15:00 | [匿名:英雄本色]
#CommunityServer实例分析 [转] 编辑
CommunityServer实例分析——注册新用户(1) 对于类似于CommunityServer(简称CS)这样如此庞大的系统,很多朋友苦于无法入手,根据我对CS研究的一点经验,感觉从具体实例...
2007-12-21 13:56:00 | [匿名:Netprawn]
#回复: CommunityServer实例分析——注册新用户(1) 编辑
2007-12-12 23:25:00 | [匿名:adgas]
#回复: CommunityServer实例分析——注册新用户(1) 编辑
thanks
2007-11-24 01:11:00 | [匿名:küresel ısınmaya hayır]
#回复: CommunityServer实例分析——注册新用户(1) 编辑
thanks
2007-11-24 01:11:00 | [匿名:küresel ısınmaya hayır]
#回复: CommunityServer实例分析——注册新用户(1) 编辑
thanks
2007-11-24 01:10:00 | [匿名:küresel ısınmaya hayır]
#(转)Asp.Net Forums研究文章集合(收藏) 编辑
Asp.NetForums是如何实现代码分离和换皮肤的http://www.cnblogs.com/dotey/archive/2004/05/28/11982.html模拟Asp.NetFor...
2007-08-15 21:34:00 | [匿名:面朝大海]
#ddd 编辑
Asp.NetForums研究文章集合 Asp.NetForums是如何实现代码分离和换皮肤的http://www.cnblogs.com/dotey/archive/2004/05/28/1...
2007-07-02 18:08:00 | [匿名:mbskys]
#Asp.net Forums与Cnforums研究文章集合 编辑
2007-06-14 10:37:00 | [匿名:sagacite]
#Asp.Net Forums研究文章集合(收藏) 编辑
Asp.NetForums研究文章集合 Asp.NetForums是如何实现代码分离和换皮肤的http://www.cnblogs.com/dotey/archive/2004/05/28/1...
2007-06-02 13:02:00 | [匿名:endif]
#Asp.Net Forums研究文章集合(收藏) 编辑
Asp.Net Forums研究文章集合(收藏)Asp.Net Forums研究文章集合。========2005.10.18新添加==========CnForums研究文章集合。
2007-04-26 17:28:00 | [匿名:最后一个烟头]
#回复: CommunityServer实例分析——注册新用户(1) 编辑
VERY USEFUL.
2006-12-24 14:00:00 | [匿名:BBOSS]
#回复: CommunityServer实例分析——注册新用户(1) 编辑
正在找这方面的文章,谢谢楼主。
2006-12-13 15:42:00 | [匿名:gargoyle]
#Asp.Net Forums研究文章集合 编辑
Asp.Net Forums研究文章集合
2006-11-29 17:40:00 | [匿名:hanchi8008]
#re: CommunityServer实例分析——注册新用户(1) 编辑
宝玉你好,
我正在学习CS,能不能做一个ASP.net1.1下的MasterPage控件应用教程示例啊?期待.可以回Email给我吗?
我的Email: xiaoshui00@yahoo.com.cn
谢谢.
2006-07-07 23:24:00 | [匿名:abo]
#re: CommunityServer实例分析——注册新用户(1) 编辑
宝玉你好,
你可以給我一点指示嗎?
問題如下:
我有做了一个会員登記頁, 我想把它代替ASF里的CreateUsers.aspx.
先不要說到里面的code, 我只是想把一个 abc.aspx 代替 CreateUsers.aspx,
這樣的做法有可能做到嗎? (因為我有試過很多方法都不可以.)
如果可以我要攺那些地方,
希望你能帮我這个忙...
很很多些你.
可以回email 給我嗎?
edision_aol@yahoo.com
2006-07-03 12:46:00 | [匿名:edision]
#re: CommunityServer实例分析——注册新用户(1) 编辑
fgysyhsshuyfyhuydusjhhufsuujyvsduweyuusdhfusdyfjsuyfusyfusyusdfyeusyuycusyfuwsfsjyfuewyuy
2006-06-12 17:53:00 | [匿名:weitao]
#Asp.Net Forums研究文章集合 编辑
Asp.Net Forums是如何实现代码分离和换皮肤的
http://www.cnblogs.com/dotey/archive/2004/05/28/11982.html
模拟Asp.Net Forums实现可以换皮肤的控件
http://webuc.net/dotey/archive/2004/05/28/835.aspx
AspNetForums 开发过程中的源代码管理
http://webuc.net/dotey/archive/2004/04/04/150.aspx
CommunityServer实例分析——注册新用户(1)...
2006-04-23 22:56:00 | [匿名:N4ry]
#Asp.Net Forums研究文章集合(收藏) 编辑
Asp.Net Forums研究文章集合(收藏)
2006-03-29 17:40:00 | [匿名:H_J_H]
#Asp.Net Forums研究文章集合 编辑
Asp.Net Forums研究文章集合
2006-03-05 11:46:00 | [匿名:H_J_H]
#re: CommunityServer实例分析——注册新用户(1) 编辑
CommunityServer 1.2 (Build: 51016) 这个版本在哪里可以下载到
2005-12-13 05:43:00 | [匿名:QQ]
#re: CommunityServer实例分析——注册新用户(1) 编辑
我直接修改了WeblogPermission()的代码。不知道是否有后遗症。目前正在测试。如果你有经验的话给一个建议
// if ((csContext.User.IsAnonymous) && ((!section.EnableAnonymousPosting) || (!csContext.SiteSettings.EnableAnonymousUserPosting)))
//TODO:我修改这个地方
if ((csContext.User.IsAnonymous) && ((!true) || (!true)))
2005-09-28 16:48:00 | [匿名:wollaston]
#re: CommunityServer实例分析——注册新用户(1) 编辑
communityserver的反馈不能像.text的这样过客也可以提交么?
必须是注册用户才能提交反馈么?
2005-09-28 12:40:00 | [匿名:wollaston]
#re: CommunityServer实例分析——注册新用户(1) 编辑
有时间能否介绍一下MasterPages的实现方式.熟悉用户控件,可是不熟悉MasterPages的这种方式,特别是Container怎样Contain,头都晕了.谢谢.
2005-09-22 16:22:00 | [匿名:猪阿不猪]
#re: CommunityServer实例分析——注册新用户(1) 编辑
我说asp.net的自定义控件怎么变容器了.....
原来是MetaBuilders.WebControls.MasterPages.dll

希望宝玉兄量产此类文章! c#丢了半年,感觉好生疏了...郁闷!
2005-09-02 16:19:00 | [匿名:ashuai]
#re: CommunityServer实例分析——注册新用户(1) 编辑
好!!!!
刚好计划研究,这会方便多了
2005-08-30 22:35:00 | [匿名:我也遇到了]
#re: CommunityServer实例分析——注册新用户(1) 编辑
very good .

期待下文/
2005-08-30 10:37:00 | [匿名:wang2855]
#re: CommunityServer实例分析——注册新用户(1) 编辑
我觉得它这样实现,用用户控件,对于常要修改的来说。比如要修改一个图标或者什么的。太不方便了。还有开始看代码时会让人觉得转过来转过去的,头很晕。
2005-08-29 19:05:00 | [匿名:修罗]
#re: CommunityServer实例分析——注册新用户(1) 编辑
大家好
2005-08-29 18:24:00 | [匿名:yanghua007]
#@176469331 编辑
O
2005-08-28 14:08:00 | [匿名:db2887016]
#re: CommunityServer实例分析——注册新用户(1) 编辑
你的文章太好了,我现在加拿大温哥华,想在注册用户的时候添加一个新的textbox,然后存入数据库中。
看了你的文章,真是让我了解了好多这个系统
期待你的继续
谢谢

Justin
2005-08-28 05:34:00 | [匿名:Jusitn]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0