在DNN中创建c#模块

本文关键字:模块 创建 DNN | 更新日期: 2023-09-27 17:50:11

我想在模块中嵌入一个c#类,这样我就可以使用按钮和单击事件调用函数。我不知道该怎么做。我已经设法编写了我想使用的类,但是我把代码放在哪里?我在DNN中创建了一个模块,得到了这个:

<%@ Control Language="C#" ClassName="MailingSystem" Inherits="DotNetNuke.Entities.Modules.PortalModuleBase" %>
<h1>Congratulations</h1>
<p>You have successfully created your module.  You can edit the source of the module control by selecting the View Source Action from the Action Menu.</p>
<script runat="server">
</script>

我不能把我的代码放在这里,我得到了关于不允许的命名空间的各种错误,不能用"Using"导入类,等等。那我该怎么做?我的类是工作的,我只需要把它包装在一个模块,并把它放在DNN页面。

在DNN中创建c#模块

最好从DotNetNuke模块模板开始,就像这样。这并不像创建aspx页面那么简单。

你可以简单地双击页面的设计部分,然后页面加载部分将出现在页面中,你可以把你的c#代码放在那里。

您可能想要这样做:

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        /// code goes here
    }
</script>

如果你不想走整个模块模板路线。

  1. 创建webusercontrol (.ascx)
  2. 转到文件后面的代码(. asx .cs)并更改类从DotNetNuke.Entities.Modules.PortalModuleBase继承(您将需要添加DotNetNuke.dll作为参考)
  3. 添加你想要的控件到ascx并附加任何事件处理程序。我更喜欢在页面初始化方法
  4. 中这样做
ASCX

:

    <asp:Button ID="btnButton" Text="Click me" runat="server" />

In Code Behind:

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        btnButton.Click += btnButton_Click;
        // OR
        btnButton.Click += (sender, e)=> { // Button clicked! Do something };
    }
    protected void btnButton_Click(object sender, EventArgs e)
    {
         // Your button has been clicked, Do something
    }
  • 编译代码

  • 从项目的bin文件夹中获取[yourprojectname].dll文件并将其复制到DNN的bin文件夹中。然后,将您的模块控件ascx复制到DNN的DesktopModules文件夹

  • 中的专用文件夹中。

    示例路径:DesktopModule> YourProjectName> [YourASCXName].ascx

  • 登录DNN,进入主机>扩展,单击添加扩展。通过向导确保将扩展类型设置为Module (DNN中有许多不同类型的扩展)。

  • 一旦添加,您将被带回到模块扩展页面。向下滚动并找到模块扩展名。点击编辑,进入模块定义,添加一个有意义的模块定义。

  • 例子:YourProjectNameMainView

    然后,将您的ASCX文件作为视图添加到该模块扩展中。点击保存,你就完成了设置

    你应该能够把你的(非常基本的)模块放在一个页面上,并使用它!