使用注册到 BizFormItemEvent 的方法设置 Kentico BizForm 的错误消息
Set error message of Kentico BizForm with method registered to BizFormItemEvent
我已经向 BizFormItemEvent.Insert.Before
注册了一个方法,该方法检查表单中提供的电子邮件地址的用户是否已经存在,如果不存在则创建一个用户。
如果用户 存在该电子邮件地址,那么我想显示一条错误消息。问题是,如果您尝试调用 e.Cancel()
或抛出异常,BizForm 只会显示通用的 "An error occurred when saving data. Please see event log for more details"
消息,我不确定如何更改该消息。
这是我目前所做的:
using CMS.Base;
using CMS.OnlineForms;
using System;
/// <summary>
/// Partial class that allows you to register custom handler methods and classes.
/// Adds the CustomFormHandlers attribute to the partial class.
/// </summary>
[CustomFormHandlers]
public partial class CMSModuleLoader
{
/// <summary>
/// Custom attribute class.
/// </summary>
private class CustomFormHandlers : CMSLoaderAttribute
{
/// <summary>
/// Called automatically when the application starts
/// </summary>
public override void Init()
{
BizFormItemEvents.Insert.Before += FormItem_InsertBeforeHandler;
}
/// <summary>
/// Handles the form data when users create new records for forms
/// </summary>
private void FormItem_InsertBeforeHandler(object sender, BizFormItemEventArgs e)
{
BizFormItem formDataItem = e.Item;
if (formDataItem != null && formDataItem.BizFormClassName == "bizform.formname")
{
// CreateUser returns false if a duplicate email is found
if(!CreateUser(formDataItem))
{
// Something needs to happen here that
// changes the error message of the bizform
// e.Cancel();
throw new Exception("A user with this email address already exists.");
}
}
}
}
}
我不确定你能否在 BizFormItemEvent.Insert.Before 活动中做到这一点。尝试为该字段实施自定义验证规则:
- 它将阻止表格被保存
- 它将允许您指定验证错误消息
我会创建一个自定义表单控件 并在IsValid 方法中实施验证。示例 here.
我已经向 BizFormItemEvent.Insert.Before
注册了一个方法,该方法检查表单中提供的电子邮件地址的用户是否已经存在,如果不存在则创建一个用户。
如果用户 存在该电子邮件地址,那么我想显示一条错误消息。问题是,如果您尝试调用 e.Cancel()
或抛出异常,BizForm 只会显示通用的 "An error occurred when saving data. Please see event log for more details"
消息,我不确定如何更改该消息。
这是我目前所做的:
using CMS.Base;
using CMS.OnlineForms;
using System;
/// <summary>
/// Partial class that allows you to register custom handler methods and classes.
/// Adds the CustomFormHandlers attribute to the partial class.
/// </summary>
[CustomFormHandlers]
public partial class CMSModuleLoader
{
/// <summary>
/// Custom attribute class.
/// </summary>
private class CustomFormHandlers : CMSLoaderAttribute
{
/// <summary>
/// Called automatically when the application starts
/// </summary>
public override void Init()
{
BizFormItemEvents.Insert.Before += FormItem_InsertBeforeHandler;
}
/// <summary>
/// Handles the form data when users create new records for forms
/// </summary>
private void FormItem_InsertBeforeHandler(object sender, BizFormItemEventArgs e)
{
BizFormItem formDataItem = e.Item;
if (formDataItem != null && formDataItem.BizFormClassName == "bizform.formname")
{
// CreateUser returns false if a duplicate email is found
if(!CreateUser(formDataItem))
{
// Something needs to happen here that
// changes the error message of the bizform
// e.Cancel();
throw new Exception("A user with this email address already exists.");
}
}
}
}
}
我不确定你能否在 BizFormItemEvent.Insert.Before 活动中做到这一点。尝试为该字段实施自定义验证规则:
- 它将阻止表格被保存
- 它将允许您指定验证错误消息
我会创建一个自定义表单控件 并在IsValid 方法中实施验证。示例 here.