在DNN 7.3 +中更新自定义门户设置

时间:2016-10-20 20:43:46

标签: c# asp.net .net dotnetnuke dotnetnuke-7

我正在接管另一位开发人员的模型并使其现代化。

他们在模块设置的settings.ascx页面中有以下行:

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

会抛出以下警告

  

警告' PortalSettings.UpdatePortalSetting(int,string,string)'已过时:'在DNN 5.0中已弃用。替换为DataProvider.UpdatePortalSetting(Integer,String,String)'

所以我将行改为:

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

正如所建议但现在我收到以下错误:

  

错误CS0120非静态字段需要对象引用,   方法或属性' DataProvider.UpdatePortalSetting(int,string,   string,int,string)'

更新DNN 7.3及更高版本的门户网站设置的最新方法是什么。我可以获得门户设置,但无法更新它们。

提前致谢。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

以下是我如何解决它

一个注意事项,这个答案是针对" custom"门户设置。因此,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");

现在可行了