我正在接管另一位开发人员的模型并使其现代化。
他们在模块设置的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及更高版本的门户网站设置的最新方法是什么。我可以获得门户设置,但无法更新它们。
提前致谢。
答案 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");
现在可行了