ASP.NET登录控件延伸(个性化)
2018-06-22 06:31:12来源:未知 阅读 ()
既然由登录控件涉及到了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"/> 是不是就是子命名空间?
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:七日筑基——开篇
- asp.net源程序编译为dll文件并调用的实现过程 2020-03-29
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据 2020-03-29
- Asp.Net中WebForm的生命周期 2020-03-29
- WPF实现带全选复选框的列表控件 2020-03-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash