DotNetNuke模块中的自定义类

时间:2011-03-21 20:02:08

标签: vb.net dotnetnuke dotnetnuke-module

我知道这可以做到,因为有其他模块有这个,但我只是没有让它工作。

我为DotNetNuke网站创建了一个自定义模块。我希望能够在模块中创建一个类对象来保存有关该对象的信息。我可以创建对象,一切都符合。但是,当我在代码隐藏中使用该对象时,它声明该对象未定义。我不确定从哪里开始。

这是View.ascx.vb的开头:

Namespace Modules.VacationForms

Public MustInherit Class View
    Inherits PortalModuleBase

这是对象类的开头:

Namespace Modules.VacationForms

Public MustInherit Class Vacation

我真的不确定为什么这不起作用。我确实下载了另一个模块代码进行比较,据我所知,一切都是一样的。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您使用的是网站项目还是Web应用程序项目? Web应用程序项目将允许您将所有代码编译在一起(这里唯一的问题可能是项目中的根命名空间设置,但是,假设两个类都在同一个项目中,那不应该是它)。如果您在Web站点项目中(例如直接在DNN解决方案中开发),那么您的代码将不会按照传统意义进行编译,而是由DNN按需编译。它只对与请求的控件/页面相关联的文件(例如,您的View.ascx.vb)和App_Code文件夹中的代码文件执行此操作。我猜你的挂断是你的Vacation类'代码文件不在App_Code文件夹中。

答案 1 :(得分:0)

看起来您没有使用Web应用程序项目进行模块开发。最简单的事情是安装模块开发模板(来自你的dnn版本的dotnetnuke.codeplex.com下载入门套件包)。

如果您的模块过于简单并且您不想这样做,或者您不想在您的电脑中安装模板,您可以执行以下操作:

  • 如果您使用的是默认情况下未使用WAP的vs版本,请从网站获取安装。
  • 在root
  • 的DesktopModules目录中为dnn模块创建一个新文件夹
  • 在该文件夹中添加新的WAP项目。
  • 从该文件夹中删除web.config,转到属性并将构建输出控制器指向您的dnn站点的bin目录(../../bin将在大部分时间工作)
  • 完成后,您的所有代码都将按预期开始工作。
  • 关于这一点的好处是,所有.vb和.ascx.vb文件都将编译在一个dll中,您可以轻松地将其作为包分发。

希望这有帮助