在DNN中创建C#模块

时间:2011-04-15 09:57:34

标签: c# asp.net dotnetnuke dotnetnuke-module

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

我不能把我的代码放在这里,我得到关于命名空间不允许的各种错误,不能用“使用”导入类,等等。那我该怎么办?我的班级正在工作,我只需将其包装在模块中并将其放在DNN页面上。

4 个答案:

答案 0 :(得分:1)

最好从DotNetNuke模块模板开始,例如one。它并不像创建aspx页面那么容易。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您可能想要这样做:

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

答案 3 :(得分:0)

如果你不想要去整个模块模板路线。执行以下操作。

  1. 创建webusercontrol(.ascx)
  2. 转到文件后面的代码(.ascx.cs)并将类更改为继承自DotNetNuke.Entities.Modules.PortalModuleBase(您需要添加DotNetNuke.dll作为参考)
  3. 向ascx添加您想要的控件并附加任何事件处理程序。我更喜欢在页面init方法
  4. 中执行此操作

    在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
    
        }
    
    1. 编译代码

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

    3. 示例路径:DesktopModule&gt; YourProjectName&gt; [YourASCXName]的.ascx

      1. 登录DNN,转到主机&gt;扩展程序,然后点击添加扩展程序。完成向导,确保将扩展类型设置为Module(DNN中有许多不同类型的扩展)。

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

      3. 示例:YourProjectNameMainView

        1. 然后,将您的ASCX文件添加为该模块扩展的视图。点击“保存”即可完成设置
        2. 您应该能够将(非常基本的)模块放在页面上并使用它!