2016-11-21 5 views
0

я поставил некоторые настройки модуля с помощьюDnn 8: Настройки модуля кэширования

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); в мой метод сохранения настроек, но это не помогло. Ключи модулей и страниц оба отключены. Что случилось?

ответ

1

Вы создаете новый экземпляр 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); 
+0

Спасибо! Это помогло! – Slip