在ASP.NET中更新现有用户的配置文件

时间:2009-09-19 11:36:12

标签: c# asp.net asp.net-profiles

我想更改现有用户的个人资料,而无需为用户创建新的个人资料。例如:我有一个用户名Usr1,我只想改变他的年龄,我该怎么做?

5 个答案:

答案 0 :(得分:3)

当您在页面中时,您可以使用ProfileCommon类来访问配置文件。在编译Web项目期间,asp.net会自动从web.config配置文件设置生成profilecommon类。

如果您想使用app_code文件夹中的配置文件,则必须使用profilebase类。页面中可用的Profilecommon也派生自此类。

Profilebase可以像这样访问

HttpContext.Profile or HttpContext.Current.Profile

要阅读个人资料值,您需要执行以下操作

HttpContext.Profile.GetPropertyValue("propertyName");

要为您需要编写的配置文件写入值

HttpContext.Profile.SetPropertyValue("propertyName", "propertyValue");

答案 1 :(得分:2)

有关详细信息,请参阅this文章。请注意,在某些情况下(请参阅我对其他答案的评论),不会生成ProfileCommon。

在这种情况下,您需要恢复使用ProfileBase:

ProfileBase profile = context.Profile;
DateTime dob= profile.GetPropertyValue("dob") as DateTime;
...
profile.SetPropertyValue("dob",dob);

答案 2 :(得分:2)

如果您要尝试更新其他人的用户个人资料(例如,您是输入客户用户名的管理员),则可以使用以下内容:

Dim p As ProfileCommon = Profile.GetProfile("Usr1")

p.TestValue1 = "New Value"
p.TestValue2 = "Another New Value"

p.Save()

同样,如果您使用的是Web项目而不是网站,则必须使用p.SetPropertyValue()而不是强类型属性名称。

答案 3 :(得分:1)

如果你看一下this article,就会解释如何做到这一点......

答案 4 :(得分:-1)

我有类似的问题,并使用sql脚本搜索解决方案。它有点困难,但如果服务器端代码不是一个选项,它是可行的。 我在dbo.aspnet_Profile(PropertyValuesString,PropertyNames)中设置了两个字段

UPDATE dbo.aspnet_Profile 
SET 
PropertyValuesString = cast(Replace(cast(PropertyValuesString as nvarchar(max)),'New Value','Old Value') as ntext)
,PropertyNames='New calculated property names'
WHERE 
UserId='userID'

困难的部分是更改PropertyNames字段。它包含配置文件名称属性,起始位置和长度。这样的事:地址:S:31:12 您必须重新计算起始位置和相应长度的新值。