2

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 で実行しています。

4

2 に答える 2

0

正直なところ、これが DNN の問題だとは思いません。一時キャッシュをクリアして、もう一度デバッグしてみます。

リー

于 2013-07-31T09:28:08.673 に答える