上个专题我们讲到了Membership,了解了Membership可以让我们轻松的实现用户注册、登录、删除用户、用户更改密码等等一系列关于用户的基本操作,但是对于一个面向多用户的web程序,为了满足用户在访问站点时能够根据自己的喜好定制web站点的一些页面布局、皮肤,语言等等一些信息,Membership是不能满足要求的,因此,在CS中引入了Profile,Profile并不是为了实现用户个性化的机制,只是实现了个性化信息存储(在asp.net 2.0 beat2.0中页面的个性化可以用webpart实现的),目前CS的版本中还没有实现这个功能。但是我想,CS实现页面布局的个性化是迟早的事情,如果有可能,我会在CS专题结束后做一些asp.net 2.0 webpart的讲解。
Community Server专题九:MemberRole之Profile [转]CS中的Profile存储的主要是注册用户的email、timezone(时区)、日期格式、字体大小等等。通过这些信息CS就可以给注册并且登录后的用户个性化他们设置的页面,如:选择的皮肤、语言、字体大小,日期格式。
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]以显示日期格式为例,我们看看Profile给我们带来的效果:
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]我们先在CS中设置日期格式如下:
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]可以看到CS论坛中的日期格式如下:
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]接下来,设置过另外一个格式:
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]在论坛中可以看到格式也改变了:
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]如果你注销后,日期格式又会发生改变(改变为默认日期格式),也就是说这种设置完全是个人的。
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]当然,要实现这样的功能需要构建复杂的代码,Profile机制在这里仅仅提供数据的存储服务,这个专题我们只分析Profile机制是如何提供存储服务的。
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]先看看配置文件:
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]
<profile enabled="true" >
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]     
<providers>
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add 
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]              name
="CommunityServerSqlProvider" 
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]              type
="CommunityServer.Components.CSProfileProvider, CommunityServer.Components"
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]              connectionStringName
="SiteSqlServer"
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]              applicationName
="dev"
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]            description
="Stores and retrieves profile data from the local Microsoft SQL Server database" 
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
/>
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]     
</providers>
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转] 
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]     
<properties>
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "commonName" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "birthdate" type = "DateTime" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "gender" type = "int" defaultValue = "0" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "dateFormat" type = "string" defaultValue="yyyy-MM-dd" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "publicEmail" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "language" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "webAddress" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "webLog" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "signature" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "signatureFormatted" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "location" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "occupation" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "interests" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "msnIM" type = "string" />    
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "yahooIM" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "aolIM" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "icqIM" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "qqIM" type = "string" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "enablePostPreviewPopup" type = "System.Boolean" defaultValue = "false" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "enableEmoticons" type = "System.Boolean" defaultValue = "true" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "timezone" type = "System.Double" defaultValue="0" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]         
<add name = "fontsize" type = "int" defaultValue = "0" />
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]    
</properties>
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]
</profile>
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]
< providers >节点下的内容我就不多说了。<properties>节点是配置的关键,该节点下面的信息就是一个注册用户可以存储的个性化信息。name是存储的名称,type是该名称保存数据的类型(其实还有一些信息可有可无,比如defaultValue等,表示默认值)。
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]用Reflector打开MemberRole,可以看到相比Membership,profile在类结构方面复杂很多,其实往往数据库设计的越简单,处理数据的类就越复杂。与Membership一样,通过实现 IConfigurationSectionHandler接口来读取在Web.config中配置。先实例化一个ProfileConfig,用来存储Providers节点下的信息和Properties节点下信息。
Community Server专题九:MemberRole之Profile [转]
Community Server专题九:MemberRole之Profile [转]
public class ProfileConfig
 beta2中的membership操作并不简单,反而复杂化,比如:如果添加一个字段,需要对UI做不小的改动。我也有这样的感觉,但是当把membership与webpart结合在一起,那么可以实现一种从数据操作,到业务逻辑,再到UI的全过程实现。也就是说,如果开发一个webpart用来处理profile,当增加profile内容的时候,UI根据增加的信息,自动的在UI上生成内容的现实与设置,那就一劳永逸了。

相关文章:

  • 2021-09-11
  • 2022-01-12
  • 2021-05-31
  • 2021-08-05
  • 2021-09-19
  • 2021-08-16
猜你喜欢
  • 2021-10-20
  • 2021-04-02
  • 2021-05-20
  • 2021-07-09
相关资源
相似解决方案