DNN では、ModuleAction
メニュー項目を追加できます。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
は決してヒットしません。
私は何を間違っていますか?
DNN 6.2 へのモジュール参照を使用して、DotNetNuke 7.1 で実行しています。