DNN建立独立模块开发项目 编译后丢失引用

这个问题已经困扰了我很久很久,一直没有解决。终于受不了,下定决心搞定它。

事情是这样,在我安装好DNN 的模版后,建立好项目, 见 利用vs独立开发DNN模块 。

首先注册Audit控件

<%@ Register TagPrefix="dnn" TagName="Audit" Src="~/controls/ModuleAuditControl.ascx" %>

调用



在注册了几个DNN的自带的UserControls后,错误出现在我的控件EditMyModule.ascx,编译就会报出下面的错误,。


Error 24 'System.Web.UI.UserControl' does not contain a definition for 'Text' and no extension method 'Text' accepting a first argument of type 'System.Web.UI.UserControl' could be found (are you missing a using directive or an assembly reference?) D:\Artur\dnn\installdnn\DotNetNuke_Community_05.01.00_Install\DesktopModules\MyModule\EditMyModule.ascx.cs 91 40 MyModule
Error 25 'System.Web.UI.UserControl' does not contain a definition for 'CreatedByUser' and no extension method 'CreatedByUser' accepting a first argument of type 'System.Web.UI.UserControl' could be found (are you missing a using directive or an assembly reference?) D:\Artur\dnn\installdnn\DotNetNuke_Community_05.01.00_Install\DesktopModules\MyModule\EditMyModule.ascx.cs 92 38 MyModule
Error 26 'System.Web.UI.UserControl' does not contain a definition for 'CreatedDate' and no extension method 'CreatedDate' accepting a first argument of type 'System.Web.UI.UserControl' could be found (are you missing a using directive or an assembly reference?) D:\Artur\dnn\installdnn\DotNetNuke_Community_05.01.00_Install\DesktopModules\MyModule\EditMyModule.ascx.cs 93 38 MyModule
Error 27 'System.Web.UI.UserControl' does not contain a definition for 'Text' and no extension method 'Text' accepting a first argument of type 'System.Web.UI.UserControl' could be found (are you missing a using directive or an assembly reference?) D:\Artur\dnn\installdnn\DotNetNuke_Community_05.01.00_Install\DesktopModules\MyModule\EditMyModule.ascx.cs 157 50 MyModule

问了下同事,这是由于在转换web应用程序(Convert to web application)时程序自动生成出错,直接在文件的相关的

EditMyModule.ascx.designer.cs文件中修改,先找到下面这段代码

protected global::System.Web.UI.UserControl ctlAudit;
修改成这样

protected global::DotNetNuke.UI.UserControls.ModuleAuditControl ctlAudit;
就可以了,其他的控件按照相应的修改

在DotNetNuke.UI.UserControls命名控件下有很多的控件,像ModuleAuditControl、TextEditor都在这里常用的控件 ,更多的相关介绍见园子里的DNN通用控件介绍上 DNN通用控件介绍下

但是后来发现这种方法有一种弊端,那就是改了一次下次还得改,只有你修改了EditMyModule.ascx控件中的代码 ,那么在EditMyModule.ascx.desiger.cs中中,那该死的错误又会出现了。

经过一段时间的摧残,实在是没办法了,要调试的次数多,改来改去,就浪费时间了。google之,在这里找到了。

好了,解决方法如下:

1.彻底删除EditMyModule.ascx.desiger.cs文件

2.在EditMyModule.ascx.cs源代码文件中手动声明相关的控件名字

protected DotNetNuke.UI.UserControls.TextEditor txtContent,MyTxtContent;
protected DotNetNuke.UI.UserControls.ModuleAuditControl ctlAudit,MyctlAudit;


3.右键EditMyModule.ascx 选择 Convert to web application

4.编译 succeeded

搞定收工!

打赏作者

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注