无法在 UIForm 上仅为一个标题操作分配事件

问题描述

我使用的是 Kentico 12 MVC。 我在管理界面有一个用于我的自定义类的 UIForm 扩展器,我想向它添加一个自定义按钮。 所以,我是这样做的:

public class EditEventExtender : ControlExtender<UIForm>
{
    public override void OnInit()
    {
        Control.PreRender += Control_PreRender;
        Control.OnBeforeSave += Control_OnBeforeSave;

        InitHeaderActions();
    }

    private void InitHeaderActions()
    {
        var page = (CMSUIPage)Control.Page;

        var autoSubmitButton = new HeaderAction
        {
            ButtonStyle = ButtonStyle.Default,Text = ResHelper.GetString("Events.AutoSubmitProjects"),CommandName = "autosubmit"
        };

        page.AddHeaderAction(autoSubmitButton);
        page.HeaderActions.ActionPerformed += HeaderActions_ActionPerformed;
    }

    public void HeaderActions_ActionPerformed(object sender,CommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "autosubmit":
                // API call

                break;
        }
    }

    private void Control_PreRender(object sender,EventArgs e)
    {
        // prerender stuff
    }

    private void Control_OnBeforeSave(object sender,EventArgs e)
    {
        // custom code to save data externally
    }
}

问题在于,在将 HeaderActions_ActionPerformed 分配给标题操作后,“保存”操作不再作为认操作。基本上,当您点击保存时,HeaderActions_ActionPerformed 会被触发,事件 CommandName 等于“保存”,并且 Control_OnBeforeSave 不再被触发。

我还尝试通过 EventName 属性将此事件仅分配给我的自定义按钮,但它不起作用,而且我找不到任何有关它的有用文档。

private void InitHeaderActions()
{
    var page = (CMSUIPage)Control.Page;

    var autoSubmitButton = new HeaderAction
    {
         ButtonStyle = ButtonStyle.Default,CommandName = "autosubmit"
         EventName = nameof(HeaderActions_ActionPerformed)
    };

    page.AddHeaderAction(autoSubmitButton);
}

public void HeaderActions_ActionPerformed(object sender,CommandEventArgs e)
{
   // API call
}

关于如何达到它的任何想法? (如何只为自定义按钮分配事件,而不是自定义和“保存”)

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)