gpt4 book ai didi

c# - DotNetNuke ModuleAction 服务器端处理

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:12 25 4
gpt4 key购买 nike

在 DNN 中,可以添加 ModuleAction 菜单项。根据this article在 DNN 站点上,甚至可以在服务器端进行一些额外的处理。将代码转换为 C# 后,永远不会调用 ActionHandler

这是我的代码:

public ModuleActionCollection ModuleActions
{
get
{
ModuleActionCollection Actions = new ModuleActionCollection();
ModuleAction urlEventAction = new ModuleAction(ModuleContext.GetNextActionID());
urlEventAction.Title = "Action Event Example";
urlEventAction.CommandName = "redirect";
urlEventAction.CommandArgument = "cancel";
urlEventAction.Url = "http://dotnetnuke.com";
urlEventAction.UseActionEvent = true;
urlEventAction.Secure = DotNetNuke.Security.SecurityAccessLevel.Admin;
Actions.Add(urlEventAction);
return Actions;
}
}

private void MyActions_Click(object sender, DotNetNuke.Entities.Modules.Actions.ActionEventArgs e)
{
DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, string.Format(Localization.GetString("ClickMessage", LocalResourceFile), e.Action.CommandName), ModuleMessage.ModuleMessageType.BlueInfo);

switch (e.Action.CommandName.ToUpper())
{
case "REDIRECT":
if (e.Action.CommandArgument.ToUpper() != "CANCEL")
{
Response.Redirect(e.Action.Url);
}
else
{
DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, "Canceled the Redirect", ModuleMessage.ModuleMessageType.YellowWarning);
}
break;
}
}

在页面初始化中,我附加了事件处理程序:

AddActionHandler(new ActionEventHandler(MyActions_Click));

我还尝试像 DNN 源代码本身那样在页面加载中附加附件。显示菜单项并重定向到 http://dotnetnuke.com被执行。但我在 MyActions_Click 中的断点从未命中。

我做错了什么?

我在 DotNetNuke 7.1 中运行,模块引用 DNN 6.2。

最佳答案

我使用 IPostBackEventHandler 而不是 DNN 方式的解决方案(直到有人纠正我):

public ModuleActionCollection ModuleActions
{
get
{
ModuleActionCollection Actions = new ModuleActionCollection();
Actions.Add(ModuleContext.GetNextActionID(),
"Bla",
"",
"",
"",
"javascript:" + Page.ClientScript.GetPostBackEventReference(this, "ARGUMENT"),
Page.ClientScript.GetPostBackEventReference(this, "ARGUMENT"),
false,
DotNetNuke.Security.SecurityAccessLevel.Edit,
true,
false);
return Actions;
}
}

public void RaisePostBackEvent(String eventArgument)
{
if (eventArgument.ToUpper() == "ARGUMENT")
{
...

Globals.Redirect(HttpContext.Current.Request.RawUrl, false);
}
}

并且不要忘记将 IPostBackEventHandler 添加到您的页面类名称中。

命名空间:using System.Web.UI;

关于c# - DotNetNuke ModuleAction 服务器端处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17964940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com