在 DNN 7.3 + 中更新自定义门户设置
Updating Custom Portal Settings in 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 及更高版本更新门户设置的最新方法是什么。我可以获取门户设置,只是无法更新它们。
提前致谢。
给你...
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);
下面是我的解决方法
请注意,此答案适用于 "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");
现在可以使用了
我正在接管另一个开发人员的模型并对其进行现代化改造。
他们在模块设置的 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 及更高版本更新门户设置的最新方法是什么。我可以获取门户设置,只是无法更新它们。
提前致谢。
给你...
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);
下面是我的解决方法
请注意,此答案适用于 "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");
现在可以使用了