我通过
进行了一些模块设置var moduleController = new ModuleController();
moduleController.UpdateModuleSetting(moduleId, "key", value);
稍后如果我尝试使用
访问该设置var rcModule = ModuleController.Instance.GetModuleByDefinition(PortalSettings.PortalId, "MyModule");
var value = rcModule.ModuleSettings["value"]?.ToString() ?? string.Empty;
返回相同的值(即使我重新保存设置),直到我清除应用缓存。在数据库中的每个保存设置之后,该值是正确的,但在模块中没有。我还尝试将ModuleController.SynchronizeModule(moduleId);
添加到我的保存设置方法中,但它没有帮助。模块和页面缓存均已禁用。
怎么了?
答案 0 :(得分:2)
您正在创建moduleController
的新实例,而不是从内存中获取现有实例。
您可以通过编程方式清除缓存。
DotNetNuke.Common.Utilities.DataCache.ClearModuleCache(TabId);
DotNetNuke.Common.Utilities.DataCache.ClearTabsCache(PortalId);
DotNetNuke.Common.Utilities.DataCache.ClearPortalCache(PortalId, false);
或者获取正确的实例并编辑属性。
ModuleInfo moduleInfo = ModuleController.Instance.GetModule(ModuleId, TabId, false);
moduleInfo.ModuleTitle = "New Title";
ModuleController.Instance.UpdateModule(moduleInfo);