如何使提交按钮单击事件处理程序中的表单无效或停止处理?
How can I invalidate or stop processing of the form from inside a submit button click event handler?
我正在尝试为 Kentico v10.0.51 和 .NET Framework 4.6 上的自定义表单控件 运行ning 实现一些自定义服务器端验证逻辑。我希望此逻辑在提交事件时 运行,并且我想在自定义表单控件的代码隐藏中定义逻辑。如何使提交按钮单击事件处理程序中的表单无效或停止处理?例如,请参阅附件中的简化测试用例。
using System;
using CMS.FormEngine.Web.UI;
using CMS.Helpers;
// ReSharper disable ArrangeAccessorOwnerBody
namespace CMSApp.CMSFormControls.Custom
{
public partial class ServerSideValidator : FormEngineUserControl
{
public override object Value
{
get { return txtValue.Value; }
set { txtValue.Value = ValidationHelper.GetString(value, string.Empty); }
}
protected override void OnInit(EventArgs e)
{
Form.SubmitButton.Click += SubmitButtonOnClick;
base.OnInit(e);
}
private void SubmitButtonOnClick(object sender, EventArgs e)
{
var valid = CustomValidationHelper.ServerSideValidationMethod(Value);
if (!valid)
{
//TODO: Invalidate the form before save or notify. (Form.?)
}
}
}
}
使用覆盖的方法:
/// <summary>
/// Returns true if a color is selected. Otherwise, it returns false and displays an error message.
/// </summary>
public override bool IsValid()
{
if ((string)Value != "")
{
return true;
}
else
{
// Sets the form control validation error message
this.ValidationError = "Please choose a color.";
return false;
}
}
在 else
语句中,对您要验证的字段或表达式执行验证,并 return 根据您验证的内容生成一条消息。
我正在尝试为 Kentico v10.0.51 和 .NET Framework 4.6 上的自定义表单控件 运行ning 实现一些自定义服务器端验证逻辑。我希望此逻辑在提交事件时 运行,并且我想在自定义表单控件的代码隐藏中定义逻辑。如何使提交按钮单击事件处理程序中的表单无效或停止处理?例如,请参阅附件中的简化测试用例。
using System;
using CMS.FormEngine.Web.UI;
using CMS.Helpers;
// ReSharper disable ArrangeAccessorOwnerBody
namespace CMSApp.CMSFormControls.Custom
{
public partial class ServerSideValidator : FormEngineUserControl
{
public override object Value
{
get { return txtValue.Value; }
set { txtValue.Value = ValidationHelper.GetString(value, string.Empty); }
}
protected override void OnInit(EventArgs e)
{
Form.SubmitButton.Click += SubmitButtonOnClick;
base.OnInit(e);
}
private void SubmitButtonOnClick(object sender, EventArgs e)
{
var valid = CustomValidationHelper.ServerSideValidationMethod(Value);
if (!valid)
{
//TODO: Invalidate the form before save or notify. (Form.?)
}
}
}
}
使用覆盖的方法:
/// <summary>
/// Returns true if a color is selected. Otherwise, it returns false and displays an error message.
/// </summary>
public override bool IsValid()
{
if ((string)Value != "")
{
return true;
}
else
{
// Sets the form control validation error message
this.ValidationError = "Please choose a color.";
return false;
}
}
在 else
语句中,对您要验证的字段或表达式执行验证,并 return 根据您验证的内容生成一条消息。