我正在使用 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,
Text = ResHelper.GetString("Events.AutoSubmitProjects"),
CommandName = "autosubmit"
EventName = nameof(HeaderActions_ActionPerformed)
};
page.AddHeaderAction(autoSubmitButton);
}
public void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
{
// API call
}
关于如何实现它的任何想法?(如何仅为自定义按钮分配事件,而不是自定义和“保存”)
提前致谢。