DNN ModuleID 未从后面的代码传递到 ascx

DNN ModuleID not being passed from the code behind to the ascx

背景故事:我使用 DNN (DotNetNuke) 内容管理系统来托管 VB。NET/Angular1 个模块。

我目前遇到一个问题,在我的模块的 View.ascx 中无法访问代码隐藏中的值。这会导致致命的运行时错误。

The code behind where the value is being passed to a publicly defined variable

The View.ascx where the variable is being used

Erreur: icod est présentement indisponible. 
DotNetNuke.Services.Exceptions.ModuleLoadException: C:\inetpub\wwwroot\FRANCO-NORD-www1\DesktopModules\icod\View.ascx(2): error BC30451: 'modID' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection. ---> System.Web.HttpCompileException: C:\inetpub\wwwroot\FRANCO-NORD-www1\DesktopModules\icod\View.ascx(2): error BC30451: 'modID' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.
à System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
à System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
à System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
à System.Web.UI.TemplateControl.LoadControl(VirtualPath virtualPath)
à DotNetNuke.UI.ControlUtilities.LoadControl[T](TemplateControl containerControl, String ControlSrc)
à DotNetNuke.UI.Modules.WebFormsModuleControlFactory.CreateModuleControl(TemplateControl containerControl, ModuleInfo moduleConfiguration)
à DotNetNuke.UI.Modules.ModuleControlFactory.LoadModuleControl(TemplateControl containerControl, ModuleInfo moduleConfiguration)
à DotNetNuke.UI.Modules.ModuleHost.LoadModuleControl() --- Fin de la trace de la pile d'exception interne --

我注意到他们引用 View.ascx(2) 好像在项目或服务器上有两个物理版本的文件,但事实并非如此。

对这里可能发生的事情有什么想法吗?如果 post 需要更多信息,请告诉我。

根据更新的屏幕截图,我的最佳猜测是您的 class 全名在您的 View.ascx 中不正确。它期待一个代码隐藏 class "Christoc.Modules.icod.View",但是在你的部分 class 中没有定义命名空间,这意味着它将默认为你的默认项目命名空间(我假设它是不同的)。

我会尝试两件事。

1) 确保在 View.ascx.cs

中定义了命名空间
Namespace Christoc.Modules.icod
    Partial Class View
        ...
    End Class
End Namespace

2) 确保将模块的程序集构建到 DNN 安装的正确 /bin 文件夹中。

我已经通过将 DNN 的本地开发实例重建为高于生产实例的版本并重建模块来解决了这个问题。我相信我们在环境中使用的 DLL 之一,PetaPoco 在模块安装在较低版本的 DNN 上时导致了问题。以前我的 DNN 本地副本是 9.1.0.367,现在是 9.1.1.129,而生产实例是 9.1.1.113。

修复它需要完全重新实例化我的开发环境并不理想,但我相信简单升级到目标站点的相同或更高版本也可以解决问题。