在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页面。
最好从DotNetNuke模块模板开始,就像这样。这并不像创建aspx页面那么简单。
你可以简单地双击页面的设计部分,然后页面加载部分将出现在页面中,你可以把你的c#代码放在那里。
您可能想要这样做:
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
/// code goes here
}
</script>
如果你不想走整个模块模板路线。
- 创建webusercontrol (.ascx)
- 转到文件后面的代码(. asx .cs)并更改类从
DotNetNuke.Entities.Modules.PortalModuleBase
继承(您将需要添加DotNetNuke.dll作为参考) - 添加你想要的控件到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文件夹 中的专用文件夹中。登录DNN,进入主机>扩展,单击添加扩展。通过向导确保将扩展类型设置为Module (DNN中有许多不同类型的扩展)。
一旦添加,您将被带回到模块扩展页面。向下滚动并找到模块扩展名。点击编辑,进入模块定义,添加一个有意义的模块定义。
示例路径:DesktopModule> YourProjectName> [YourASCXName].ascx
例子:YourProjectNameMainView
- 然后,将您的ASCX文件作为视图添加到该模块扩展中。点击保存,你就完成了设置
你应该能够把你的(非常基本的)模块放在一个页面上,并使用它!