在DNN中创建C#模块

在DNN中创建C#模块,c#,asp.net,dotnetnuke,dotnetnuke-module,C#,Asp.net,Dotnetnuke,Dotnetnuke Module,我想在模块中嵌入一个C#类,以便使用按钮和单击事件调用函数。我不知道怎么做。我已经成功地编写了我想要使用的类,但是我应该把代码放在哪里呢?我在DNN中创建了一个模块,得到了以下结果: <%@ Control Language="C#" ClassName="MailingSystem" Inherits="DotNetNuke.Entities.Modules.PortalModuleBase" %> <h1>Congratulations</h1> <

我想在模块中嵌入一个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页面上。

最好从DotNetNuke模块模板开始,如下所示。这不像创建一个aspx页面那么简单。

最好从DotNetNuke模块模板开始,如下所示。这并不像创建一个aspx页面那么简单。

只需双击页面的设计部分,页面中就会出现页面加载部分,您可以将c代码放在那里。

只需双击页面的设计部分,然后页面中会出现页面加载部分,您可以将c代码放在那里。

您可能需要执行以下操作:

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

受保护的无效页面加载(对象发送方、事件参数e)
{
///代码在这里
}

您可能需要执行以下操作:

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

受保护的无效页面加载(对象发送方、事件参数e)
{
///代码在这里
}

如果您不想走整个模块模板路线。执行以下操作

  • 创建webusercontrol(.ascx)
  • 转到代码隐藏文件(.ascx.cs)并将类更改为从
    DotNetNuke.Entities.Modules.PortalModuleBase
    继承(您需要添加DotNetNuke.dll作为参考)
  • 将所需的控件添加到ascx并附加任何事件处理程序。我更喜欢在page init方法中执行此操作
  • 在ASCX中:

        <asp:Button ID="btnButton" Text="Click me" runat="server" />
    
        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,转到主机>扩展,然后单击添加扩展。完成向导,确保将扩展类型设置为模块(DNN中有许多不同类型的扩展)

  • 添加后,您将返回模块扩展页面。向下滚动并找到您的模块扩展名。单击编辑,转到模块定义,然后添加具有有意义名称的模块定义

  • 示例:YourProjectNameMainView

  • 然后,将ASCX文件作为视图添加到该模块扩展名中。单击“保存”,即可完成安装

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

    如果您不想走整个模块模板路线。执行以下操作

  • 创建webusercontrol(.ascx)
  • 转到代码隐藏文件(.ascx.cs)并将类更改为从
    DotNetNuke.Entities.Modules.PortalModuleBase
    继承(您需要添加DotNetNuke.dll作为参考)
  • 将所需的控件添加到ascx并附加任何事件处理程序。我更喜欢在page init方法中执行此操作
  • 在ASCX中:

        <asp:Button ID="btnButton" Text="Click me" runat="server" />
    
        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,转到主机>扩展,然后单击添加扩展。完成向导,确保将扩展类型设置为模块(DNN中有许多不同类型的扩展)

  • 添加后,您将返回模块扩展页面。向下滚动并找到您的模块扩展名。单击编辑,转到模块定义,然后添加具有有意义名称的模块定义

  • 示例:YourProjectNameMainView

  • 然后,将ASCX文件作为视图添加到该模块扩展名中。单击“保存”,即可完成安装

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

    谢谢你的链接,我可以下载它,我正在努力把它放在我的DNN网站上,但我仍然不确定我应该在哪里输入我自己的代码…我还停留在如何添加它。这是一个项目,我们已经有一个DNN网站,我创建了作为一个单独的项目根据指示模块。我怎样才能参考它?当我尝试从清单创建模块时,我只能看到我团队的DNN项目中的文件…我如何添加这个单独的模块?谢谢你的链接,我能够下载它,我正在努力将它放在我的DNN网站上,但我仍然不确定我应该在哪里输入我自己的代码…我也一直在想如何添加它。这是一个项目,我们已经有一个DNN网站,我创建了作为一个单独的项目根据指示模块。我怎样才能参考它?当我尝试从清单创建模块时,我只能看到我团队的DNN项目中的文件…如何添加这个单独的模块?