2016-10-20 6 views
0

Я беру на себя и модернизирую модель от другого разработчика.Обновление настроек пользовательского портала в DNN 7.3 +

Они имели следующую строку на странице settings.ascx настроек модуля:

DotNetNuke.Entities.Portals.PortalSettings.UpdatePortalSetting(this.PortalId, "setting_name", tx_emailfrom.Text); 

Который бросает следующее предупреждение

Warning 'PortalSettings.UpdatePortalSetting(int, string, string)' is obsolete: 'Deprecated in DNN 5.0. Replaced by DataProvider.UpdatePortalSetting(Integer, String, String)'

Так что я изменил строку:

DotNetNuke.Data.DataProvider.UpdatePortalSetting(this.PortalId, "setting_name", tx_emailfrom.Text, UserId, "en-US"); 

Как было предложено, но теперь я получаю следующее сообщение об ошибке:

Error CS0120 An object reference is required for the non-static field, method, or property 'DataProvider.UpdatePortalSetting(int, string, string, int, string)'

Что является самым современным способом обновления настроек портала для DNN 7.3 и выше. Я могу получить настройки портала, просто испытывая проблемы с их обновлением.

Заранее спасибо.

ответ

1

Ниже показано, как я решил его

Одно примечание, этот ответ для настройки портала «обычай». Таким образом, решение VDWWD работает для всех существующих параметров портала объекта портала.

Я это исправил мое добавление .Instance() в следующей строке:

DataProvider.UpdatePortalSetting(this.PortalId, "bulletin_sendemail_from", this.tx_emailfrom.Text, UserId, "en-US"); 

изменяется на

DataProvider.Instance().UpdatePortalSetting(this.PortalId, "bulletin_sendemail_from", this.tx_emailfrom.Text, UserId, "en-US"); 

А теперь он работает

+0

как вы прочитали бы эту собственность? – Mosta

1

Здесь вы идете ...

using DotNetNuke.Entities.Portals; 

//get the current portal settings 
PortalInfo portalInfo = PortalController.Instance.GetPortal(PortalId); 

//overwrite a specific setting 
portalInfo.PortalName = "My New Portal Name"; 

//save the new portal settings 
PortalController portalController = new PortalController(); 
portalController.UpdatePortalInfo(portalInfo); 

Вам может понадобиться очистить кэш для новых настроек вступили в силу.

DotNetNuke.Common.Utilities.DataCache.ClearPortalCache(PortalId, false); 
+0

спасибо за предложение, но настройки Я говорю о настройке «custom» и не является свойством PortalObject. –

Смежные вопросы