【问题标题】:Custom class in DotNetNuke ModuleDotNetNuke 模块中的自定义类
【发布时间】:2011-03-21 20:02:08
【问题描述】:

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

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

这是 View.ascx.vb 的开头:

Namespace Modules.VacationForms

Public MustInherit Class View
    Inherits PortalModuleBase

这是对象类的开头:

Namespace Modules.VacationForms

Public MustInherit Class Vacation

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

【问题讨论】:

    标签: vb.net dotnetnuke dotnetnuke-module


    【解决方案1】:

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

    【讨论】:

    • 我将 Vacation 类移动到 App_Code 文件夹中,这很有效,但这提出了一个问题,如果我为模块创建安装包,是否会包含该类?
    • 我建议切换到 Web 应用程序项目(请参阅 weblogs.asp.net/ianrobinson/archive/2008/10/15/…),但可以将 App_Code 文件与您的模块一起打包(在清单中您指定文件的路径)。跨度>
    【解决方案2】:

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

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

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多