无法在DNN的子控件中获取ModuleId

时间:2014-01-08 06:13:16

标签: dotnetnuke

我在DNN中拥有父控件和子控件。 当我尝试在子控件的页面加载事件上获取moduleId时,我得到-1。 以下是儿童控制的代码。

Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "PlanSponsorManager", "mid=" + ModuleId);

请建议我如何获得moduleId

2 个答案:

答案 0 :(得分:3)

加载子控件时,需要执行以下操作

var controlToLoad = "Controls/ArticleList.ascx";
                if (ArticleId > 0)
                {
                    controlToLoad = "Controls/ArticleView.ascx";
                }

                var mbl = (dnnsimplearticleModuleBase)LoadControl(controlToLoad);
                mbl.ModuleConfiguration = ModuleConfiguration;
                mbl.ID = System.IO.Path.GetFileNameWithoutExtension(controlToLoad);
                phViewControl.Controls.Add(mbl);

设置模块配置很重要

来自http://dnnsimplearticle.codeplex.com/SourceControl/latest#cs/View.ascx.cs

的示例

答案 1 :(得分:0)

我认为您的子控件继承自PortalModuleBase。不过,我认为使用这种类型控件的ModuleId属性会返回-1,因为它不是扩展数据库中的声明控​​件。 我想你可以尝试使用“Parent.ModuleID”来获取父PortalModuleBase。