我想更改现有用户的个人资料,而无需为用户创建新的个人资料。例如:我有一个用户名Usr1
,我只想改变他的年龄,我该怎么做?
答案 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 您必须重新计算起始位置和相应长度的新值。