0

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

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

这是 View.ascx.vb 的开头:

Namespace Modules.VacationForms

Public MustInherit Class View
    Inherits PortalModuleBase

这是对象类的开头:

Namespace Modules.VacationForms

Public MustInherit Class Vacation

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

4

2 回答 2

2

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

于 2011-03-21T20:40:57.000 回答
0

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

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

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

希望这可以帮助

于 2011-03-22T07:33:46.577 回答