0

我正在使用 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的事件并且不再触发。CommandNameControl_OnBeforeSave

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

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

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

    page.AddHeaderAction(autoSubmitButton);
}

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

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

提前致谢。

4

0 回答 0