ASP.NET登录控件延伸(个性化)
既然由登录控件涉及到了Membership,那么就不得不提到用户个性化Profile对象。个性化允许为用户保存特定的个性化信息到数据库中,因此它不同于ASP.NET状态管理之处在于可以永久性保存这些信息,很有必要强调一下web application与website的一个不同,web application中无法象website中那样,直接用Profile对象(http://hi.baidu.com/windlhj/blog/item/8f4c4a13779de02fdc5401b7.html,web application和website相互转化http://blog.csdn.net/guwenzhong/archive/2009/11/10/4792814.aspx)。个性化的设置与Membership的设置非常类似:
1.配置个性化提供者
默认个性化提供者是SqlProfileProvider,它使用ASP.NET.MDF(怎么样是不是非常熟悉,忘记的话去看Membership的设置)存储个性化信息。实际上你按照Membership的设置创建好数据存储,也就把个性化的数据存储创建好了,因为Membership与Profile用的是一个数据库(包括利用aspnet_regsql.exe更换数据库以后),用户的个性信息保存在数据库的aspnet_profile表中。与Membership一样Profile的个性提供者也是在根web.config里配置的。因为之前已经配置好了数据库连接节点,所以这里只配个性化提供者就行了:
<system.web>
<profile defaultProvider="MyFirstSqlProfileProvider">
<providers>
<clear/>
<add name="MyFirstSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider"
connectionStringName="newsystemConnectionString" applicationName="ProfileDemo"/>
</providers>
</profile>
</system.web>
这样就配置好了个性化提供者,其名字是MyFirstSqlProfileProvider。
而我们既然要存储用户的个性化信息到aspnet_profile表中,我们必须为其添加属性,而这些属性要在<profile>节点内的<properties>里用<add>标签添加,并且至少要有一个属性名:
<system.web>
<profile defaultProvider="MyFirstSqlProfileProvider">
<providers>
<clear/>
<add name="MyFirstSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider"
connectionStringName="newsystemConnectionString" applicationName="ProfileDemo"/>
</providers>
<properties>
<add name="QQ" type="string"/>
<add name="Age" type="Int32"/>
<add name="Address" type="string"/>
<add name="Tel" type="string"/>
</properties>
</profile>
</system.web>
profile属性的意思:name(属性名,必须)type(属性类型,默认是string)serializeAs(当序列化时使用的格式)
readOnly(只读属性)defaultValue(属性的默认值)allowAnonymous(布尔值,是否允许匿名用户读取和设置该属性)
Provider(该属性关联的个性化提供者)customProviderData(允许用户传递自定义数据到个性化提供者)
使用个性化属性
在默认情况下只有验证用户才能读取和写入个性化信息到数据库,举例如下:
//直接给profile赋值就可保存用户个性化,很类似session
protected void Button1_Click(object sender, EventArgs e)
{
//在webapp中无法像website中那样直接使用profile对象,引入using System.Web.Profile还是无法直接用,但可以使用ProfileBase,ProfileManager,ProfileMigrateEventArgs等类。
//存储个性化信息
HttpContext.Current.Profile.SetPropertyValue("QQ", TextBox9.Text);
HttpContext.Current.Profile.SetPropertyValue("Age", int.Parse(DropDownList2.SelectedValue));
HttpContext.Current.Profile.SetPropertyValue("Tel", TextBox10.Text);
HttpContext.Current.Profile.SetPropertyValue("Address",TextBox11.Text);
}
protected void Button2_Click(object sender, EventArgs e)
{
//获取个性化信息
Label1.Text = "当前用户:" + HttpContext.Current.Profile.UserName + "QQ:" + HttpContext.Current.Profile.GetPropertyValue("QQ") + "Age:" + HttpContext.Current.Profile.GetPropertyValue("Age") + "Tel" + HttpContext.Current.Profile.GetPropertyValue("Tel") + "Address" + HttpContext.Current.Profile.GetPropertyValue("Address");
}
还可以给个性化属性分组便于管理:在web.config中<properties>节点内加<group>再添加组名跟属性即可:
<system.web>
<profile defaultProvider="MyFirstSqlProfileProvider">
<providers>
<clear/>
<add name="MyFirstSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider"
connectionStringName="newsystemConnectionString" applicationName="ProfileDemo"/>
</providers>
<properties>
<add name="QQ" type="string"/>
<add name="Age" type="Int32"/>
<add name="Address" type="string"/>
<add name="Tel" type="string"/>
<group name="Habits">
<add name="likebooks"/>
<add name="likesports"/>
</group>
</properties>
</profile>
</system.web>
那些属性的type类型也可以是自己写的类(该类既可以在App_Code里(App_Code相当于当前命名空间里的子命名空间(在webapp里使用注意其里面类的属性要改成编译才能被智能提示))也可以在已编译好的DLL里(DLL是程序集的一种形式(另一种是exe)但在Web.config里一定要写全类所在的命名空间.类名,否则会出现找不到类型的错误):
如 <add name="ZiDingDe" type="Dingyibymyself.personlity"/> 属性名ZiDingDe 类型 写全类所在的命名空间.类名 Dingyibymyself.personlity
再如在App_Code里的自定义类 <add name="ZiDingDe2" type="WebApplication1.App_Code.personlity"/> 是不是就是子命名空间?
ASP.NET登录控件延伸(个性化)的更多相关文章
- ASP.NET登录控件login。
1.Login控件.通常情况下会出现3个核心元素.用户名文本框.密码输入框.提交凭证的按钮. 1>.比较重要的属性:CreateUserText属性:包含站点注册页的链接文本.CreateUse ...
- asp.net Login控件基本属性及事件说明
原文:asp.net Login控件基本属性及事件说明 Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径. Login系列控件包含下列控件: Login 登录控件 ...
- asp.net分页控件
一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Reg ...
- asp.net ajax控件tab扩展,极品啊,秒杀其它插件
说明:asp.net ajax控件tab要设置width和height,而且在线文本编辑器放能够放入tab中,也必须是asp.net的控件型在线文本,例如fckeditor,下面是我设置好的配置. & ...
- javascript获取asp.net服务器端控件的值
代码如下: <%@ Page Language="C#" CodeFile="A.aspx.cs" Inherits="OrderManage_ ...
- ASP.NET控件<ASP:Button /> html控件<input type="button">区别联系
ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样 ...
- [ASP.NET]asp.net Repeater控件的使用方法
asp.net Repeater控件的使用方法 -- : 4770人阅读 评论() 收藏 举报 asp.netserveraspdatasetdeletexhtml 今天学习了,Repeater控件 ...
- 关于ASP.net TextBox控件的失去焦点后触发其它事件
编写人:CC阿爸 2015-2-02 今天在这里,我想与大家一起分享如何处理的ASP.net TextBox控件的失去焦点后触发其它事件的问题,在此做个小结,以供参考.有兴趣的同学,可以一同探讨与学习 ...
- 浅谈ASP.NET报表控件
OWC似乎使用者居多,但看见有网友在帖中抱怨OWC在使用时需要许可证书,于是将其排除,我可不想BOSS在看报表时弹出一个“没有许可证书”的窗口. 接着找到了ComponentOne的Web chart ...
随机推荐
- Windows 上如何安装Sqlite(转载)
1.获得命令行程序 SQLite命令行程序(CLP)是开始使用SQLite的最好选择,按照如下步骤获取CLP: 1).打开浏览器进入SQLite主页, www.sqlite.org. 2).单击页 ...
- 对于java反射的理解
java中的反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装配,无序在组件之间进行链接. 反射允许在编写与执行时,使程序代码能够接入装载到JVM的类的内部信息,而不是源代码中选定的类 ...
- STM32F0xx_USART收发配置详细过程
前言 串口对于处理器来说算是一种标配,也是在软件开发中必不可少的,那就是使用串口来调试信息(打印出相应的信息).STM32F0系列的芯片,串口根据型号不同,数量也不同,从1个到8个不等. 今天主要总结 ...
- Multi-Language IDE for Professional Developers (Komodo)
Komodo is the professional IDE for major web languages, including Python, PHP, Ruby, Perl, HTML, CSS ...
- Microsoft Power BI Designer
1/25/2015年1月25发布的预览版本,可以通过以下地址下载,注意有x64 和x32 版本区别(和上次PowerMap一样,一般也推荐的使用x64版本) http://www.microsoft. ...
- Java学习中,常用的命令管理(Java 学习中的小记录)
Java学习中,常用的命令管理 作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始 ---->所有程序---& ...
- 微软CRM解决医药企业串货之痛
没有准确.及时的流向数据统计和分析,医药企业营销部门就无法有效管理串货泛滥问题,串货会造成渠道无利可赚,挫伤渠道的积极性,产品无人愿意卖,最终伤害的还是医药企业. 医药企业营销发展的不同阶段对串货的态 ...
- 分布式缓存Memcached
分布式缓存服务器,既然用到数据缓存很明显就是想高效性的获取数据,大容量的存储数据.为了可以缓存大量的数据以及可以高效获取数据,那么分布式缓存数据库就要解决数据可以水平线性扩展,这样可以扩大数据容 ...
- db2建立表空间
--缓冲池 CREATE BUFFERPOOL EMP_BUF_POOL IMMEDIATE ALL DBPARTITIONNUMS SIZE 250 NUMBLOCKPAGES 0 PAG ...
- SQL开发技巧(二) 【转】感觉他写的很好
本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列 ...