2016-11-03 61 views
0

我试图通过调用ajax以编程方式更新一些自定义配置文件属性。当ajax触发时,属性获取新值,然后刷新页面并显示新属性。但它不保存在数据库[dbo.UserProfile]中。如果我清除cache,则旧值会重新出现。以编程方式更新DNN配置文件属性

这里是我的Web方法的代码:

Dim oProfileUserInfo As UserInfo = UserController.Instance.GetUserById(PortalSettings.PortalId, ProfileUserID) 
    oProfileUserInfo.Profile.SetProfileProperty("myproperty", "new value") 
    UserController.UpdateUser(PortalSettings.PortalId, oProfileUserInfo, True, False) 

我使用DNN 8.0.4

任何想法?

回答

0

自定义配置文件属性键区分大小写。所以,如果你用的名字myproperty取得了自定义配置文件属性,那么你应该使用这样的:

oProfileUserInfo.Profile.SetProfileProperty("myproperty", "new value") 

不喜欢这样的:

oProfileUserInfo.Profile.SetProfileProperty("myProperty", "new value") 

我假设你没有创建“管理下的自定义属性>网站设置>用户帐户设置>配置文件设置“。

测试这对DNN 03年7月3日,所以也许它的工作原理不同,第8

+0

是的,我使用的是完全相同的字母大小写从ProfilePropertyDefinition表的属性名。它看起来像更新暂时存储在缓存中,但不知道如何处理。 – alwaysVBNET

+0

当我调用UserController.UpdateUser时,数据库会自动更新。我也只测试了DNN 8中的代码片段。它也在那里工作,DNN 8 db也被更新。 – VDWWD

+0

也许我的表损坏?你知道任何可能阻止这些变化的东西吗? – alwaysVBNET

0

我相信你需要使用DotNetNuke.Entities.Profile.ProfileController.UpdateUserProfile()。

尝试:

Dim oProfileUserInfo As UserInfo = UserController.Instance.GetUserById(PortalSettings.PortalId, ProfileUserID) 

oProfileUserInfo.Profile.SetProfileProperty("myproperty", "new value") 

ProfileController.UpdateUserProfile(oProfileUserInfo) 
相关问题