All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
DropDownList,绑定数据库中的字段获取下拉列表值_[Asp.Net教程]
ASP判断SQLSERVER备注字段为空值_[SQL Server教程]
动态SQL四种类型的语句格式_mssql学习_编程技术
利用HttpRequest登录到某个网站,然后获取网站信息的程序示例_[Asp.Net教程]
50个常用sql语句_mssql学习_编程技术
ASP.NET2.0,上传图片并为用户创建相应文件夹_.net资料_编程技术
SQLServer的连接处理技巧_[SQL,Server教程]
C#中PrintDocumentPrintDocument组件的事件使用实例
用ASP.NET还原与恢复Sql,server_[Asp.Net教程]
SQL数据操作基础(初级)1_mssql学习_编程技术
Reading number is top 10 pictures
西游四格漫画(四)
真正的国产-非模拍 贵在是真实2
Kim jong il's mistress, national beauty JinYuJi actor3
穷哥们向美女求婚攻略
PengLiYuan lady for the world health organization fight TB and AIDS goodwill ambassador
两张抽象画
Startling Russian girl blind date scene3
黑社会大哥相亲
世界五大海盗
Tie a large font of mouse
Download software ranking
Sora aoi 120 minutes
美女游泳记
The Bermuda triangle2
linux安装大全
C#编程思想
Adobe Flash Player(IE) 10.0.32.18 浏览器专用的FLASH插件
都市狐狸姑娘传
The cock of the Grosvenor LTD handsome
C#程序员参考手册
I'm come from Beijing2
归海一刀 published in(发表于) 2014/1/30 0:51:47 Edit(编辑)
Asp.Net,Ajax,学习笔记15,如何使用ASP.NET,Profile_[Asp.Net教程]

Asp.Net,Ajax,学习笔记15,如何使用ASP.NET,Profile_[Asp.Net教程]

Asp.Net Ajax 学习笔记15 如何使用ASP.NET Profile_[Asp.Net教程]

Asp.Net中有一套与用户相关联的属性设置,可以通过在WebConfig里配置来直接使用,他的作用为


存储和使用唯一与用户对应的信息
展现个人化版本的Web应用程序
用户的唯一身份标识在再次访问时识别用户
Asp.Net Profile提供的跟用户相关的类型都是强类型


首先生成数据库脚本,使用Visual Studio 2005 命令提示,输入命令行aspnet_regsql -A p -sqlexportonly filename


-A:表明增加一个数据库
p:表明生成的是Profile的数据库
-sqlexportonly:表明是倒出sql脚本,用其他参数可以直接创建数据库,具体的说明可以参看aspnet_regsql的帮助说明
filename:保存的文件名
现在数据库创建好了,里面有4张表aspnet_Application用来存储应用程序的相关类型,aspnet_Profile用来保存用户的属性信息,aspnet_SchemaVersion用来存储版本信息,aspnet_User用来保存用户信息。可以从这几张表可以看到,多个应用程序可以用同一个数据库来表示用户信息。


下面是如何来配置WebConfig来支持Profile


首先配置连接字符串





然后在system.web节点下添加profile节点





type="System.Web.Profile.SqlProfileProvider"
connectionStringName="ProfileDatabase"
applicationName="ProfileSample"
description="Sample for ASP.NET profile and Profile Service" />












详细说明一下。automaticSaveEnalbed="true",表明用户在提交数据之后,自动保存用户属性。properties节点下面就是用户需要配置的自己的用户属性,group表明这是一个组,相当与这个属性是一个对象,他保存其他的信息。在每个属性后面都有一个允许匿名用户访问的属性,这个是默认选项,可以不用输入。有时候配置了系统报需要使用匿名授权模式,那么在system.web节点下添加就可以解决这个问题。


下面是使用Asp.Net的Profile属性,不涉及到Ajax。


首先让用户登陆,那么我们需要让系统记录这个用户,并把他设置为登陆状态。


FormsAuthentication.SetAuthCookie(this.txtUserName.Text, false);
第二个参数表明是否跨浏览器保持会话状态,退出登陆使用


FormsAuthentication.SignOut();
下面是读取Profile


protected void btnShowProfile_Click(object sender, EventArgs e)
{
if (this.Profile.Age == 0)
{
txtName.Text = string.Empty;
txtAge.Text = string.Empty;
txtEmail.Text = string.Empty;
txtCity.Text = string.Empty;
txtStreet.Text = string.Empty;
txtPostalCode.Text = string.Empty;


this.lblMessage.Text = this.User.Identity.Name + ": No Profile";
}
else
{
txtName.Text = this.Profile.Name;
txtAge.Text = this.Profile.Age.ToString();
txtEmail.Text = this.Profile.Email;
txtCity.Text = this.Profile.Address.City;
txtStreet.Text = this.Profile.Address.Street;
txtPostalCode.Text = this.Profile.Address.PostalCode;


this.lblMessage.Text = this.User.Identity.Name + ": Profile Loaded";
}
}



我们首先判断Profile里面的Age属性是否为0,其实可以判断任何一个属性。然后将Profile里面的属性给一一赋值到显示属性上。如果碰到了group节点上的属性,可以象使用对象里的属性一样使用。


然后是保存Profile


protected void btnSaveProfile_Click(object sender, EventArgs e)
{
this.Profile.Name = this.txtName.Text;
this.Profile.Age = Int32.Parse(this.txtAge.Text);
this.Profile.Email = this.txtEmail.Text;
this.Profile.Address.City = this.txtCity.Text;
this.Profile.Address.Street = this.txtStreet.Text;
this.Profile.Address.PostalCode = this.txtPostalCode.Text;


this.lblMessage.Text = this.User.Identity.Name + ": Profile Saved";
}



可以看到上面这段代码我们没有显视的保存Profile,当一个Profile的属性改变时,提交到服务器,Profile的属性会自动保存到数据库。碰到group节点的使用方法也一样。


这就是简单的Profile的在Asp.Net里面的应用。


下面我们来看看在Asp.Net Ajax里面怎么使用Profile。首先我们在system.web.extensions节点下的scripting节点下的webServices节点下添加一个节点


readAccessProperties="Name, Age, Email, Address.City, Address.Street, Address.PostalCode"
writeAccessProperties="Name, Age, Email, Address.City, Address.Street, Address.PostalCode" />
readAccessProperties时允许读取的Profile属性。writeAccessProperties时允许写入的Profile属性


然后我们在页面上需要添加一个ScriptManager





LoadProperties表明预加载的Profile的属性。


首先时读取Profile的属性


function loadProfiles()
{
//debugger;
Sys.Services.ProfileService.load(
null,
loadCompleted);
}



Sys.Services.ProfileService.load的方法详细说明如下


Sys.Services.ProfileService.load(
propertyNames, //需要加载的Profile名,null表示全取
loadCompletedCallback, //加载成功的回调函数
failedCallback, //加载失败的回调函数
userContext// 可以随意指定的上下文对象
);


读取完成之后


function loadCompleted()
{
//debugger;
var properties = Sys.Services.ProfileService.properties;
if(properties.Age)
{
get("txtName").value = properties.Name;
get("txtAge").value = properties.Age;
get("txtCity").value = properties.Address.City;
get("txtEmail").value = properties.Email;
get("txtStreet").value = properties.Address.Street;
get("txtPostalCode").value = properties.Address.PostalCode;
get("message").innerHTML = "Profile Loaded";
}
else
{
get("txtName").value = "";
get("txtAge").value = "";
get("txtCity").value = "";
get("txtEmail").value = "";
get("txtStreet").value = "";
get("txtPostalCode").value = "";
get("message").innerHTML = "Profile not Loaded";
}
}
Sys.Service.ProfileService.properties存储的就是Profile里面的属性,可以直接使用Name、Age等属性。loadCompleted是存在参数的,这里我们只是省略了。


function loadCompletedCallback(
number, // 本次加载的Profile数量
userContext, // 用户随意指定的上下文对象
methodName//即"Sys.Services.ProfileService.load"
)


读取失败的回调函数


function failedCallback(
error, // 错误对象
userContext, // 用户随意指定的上下文对象
methodName//即"Sys.Services.ProfileService.load"
)


然后就是保存Profile的属性


function saveProfiles()
{
var properties = Sys.Services.ProfileService.properties;

properties.Name = get("txtName").value;
properties.Age = parseInt(get("txtAge").value, 10);
properties.Email = get("txtEmail").value;
properties.Address.City = get("txtCity").value;
properties.Address.Street = get("txtStreet").value;
properties.Address.PostalCode = get("txtPostalCode").value;

Sys.Services.ProfileService.save(null, saveCompleted);
}
碰到象Address这样的group标签标明的属性可以使用JSon字符串来设置,并且使用properties.save方法来转换城Address的属性


properites.Address = {City : “Shanghai”,
Street: “People Square”, PostalCode: “20002”};
properties.save(…);
注意,就算在webconfig里设置了自动保存的属性,在ajax里面也不会自动保存,需要调用Sys.Services.ProfileService.save方法进行保存。save方法的完整签名如下


Sys.Services.ProfileService.save(
propertyNames, //需要保存的Profile名,null表示全取
saveCompletedCallback, //保存成功的回调函数
failedCallback, //加载失败的回调函数
userContext// 可以随意指定的上下文对象
);


保存成功的回调函数的完整签名


function saveCompletedCallback(
number, // 本次保存的Profile数量
userContext, // 用户随意指定的上下文对象
methodName//即“Sys.Services.ProfileService.save”
)


保存失败的回调函数的完整签名


function failedCallback(
error, // 错误对象
userContext, // 用户随意指定的上下文对象
methodName//即"Sys.Services.ProfileService.save"
)


ProfileService的其他属性


get_timeout()/set_timeout(time):设置或得到超时时间
defaultLoadCompletedCallback:默认读取完成属性,指定一个函数地址,函数签名与loadCompletedCallback类似
defaultSaveCompletedCallback:默认保存完成属性,指定一个函数地址,函数签名与saveCompletedCallback类似
defaultFailedCallback:默认读取或保存失败属性,指定一个函数地址,函数签名与failedCallback类似







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.