【问题标题】:Update DNN Profile Property programmatically以编程方式更新 DNN 配置文件属性
【发布时间】:2016-11-03 01:16:57
【问题描述】:

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

这是我的网络方法的代码:

   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

有什么想法吗?

【问题讨论】:

    标签: dotnetnuke dotnetnuke-8


    【解决方案1】:

    自定义配置文件属性键区分大小写。因此,如果您创建了一个名为 myproperty 的自定义配置文件属性,那么您应该像这样使用它:

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

    不是这样的:

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

    我假设您确实在“管理员 > 站点设置 > 用户帐户设置 > 配置文件设置”下创建了自定义属性。

    在 DNN 07.03.03 上对此进行了测试,所以它在 8 中可能会有所不同。

    【讨论】:

    • 是的,我使用的字母大小写与 ProfilePropertyDefinition 表中的 PropertyName 完全相同。看起来更新暂时存储在缓存中,但不知道如何处理。
    • 当我调用UserController.UpdateUser 时,数据库会自动更新。我还刚刚测试了 DNN 8 中的 sn-p。它也可以在那里工作,DNN 8 db 也已更新。
    • 可能我的表损坏了?您是否知道有什么可能会阻止这些更改?
    • 你用 try-catch 包裹它了吗?日志是否显示任何错误?您是否拥有正确的 PortalId(用户可以在多个门户中)。你可以试试Dim oProfileUserInfo As UserInfo UserController.GetUserByName(userName),看看是否可行。
    • 请务必在设置配置文件后调用“更新”用户调用,否则将无法保存(抱歉,我现在看到的是原帖)
    【解决方案2】:

    我认为您需要使用 DotNetNuke.Entities.Profile.ProfileController.UpdateUserProfile()。

    试试:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 2012-06-06
      • 2012-05-04
      • 2019-04-24
      相关资源
      最近更新 更多