C# 使用注册到BizFormItemEvent的方法设置Kentico BizForm的错误消息
我已经在C# 使用注册到BizFormItemEvent的方法设置Kentico BizForm的错误消息,c#,asp.net,kentico,C#,Asp.net,Kentico,我已经在BizFormItemEvent.Insert.Before中注册了一个方法,该方法检查用户是否已经存在,并且在表单中提供了电子邮件地址,如果没有,则创建一个用户 如果用户确实存在该电子邮件地址,则我希望显示一条错误消息。问题是,如果您试图调用e.Cancel()或抛出异常,BizForm只会显示一般的“保存数据时发生错误。有关详细信息,请参阅事件日志”消息,我不确定如何更改该消息 以下是我目前正在做的事情: using CMS.Base; using CMS.OnlineForms;
BizFormItemEvent.Insert.Before
中注册了一个方法,该方法检查用户是否已经存在,并且在表单中提供了电子邮件地址,如果没有,则创建一个用户
如果用户确实存在该电子邮件地址,则我希望显示一条错误消息。问题是,如果您试图调用e.Cancel()
或抛出异常,BizForm只会显示一般的“保存数据时发生错误。有关详细信息,请参阅事件日志”
消息,我不确定如何更改该消息
以下是我目前正在做的事情:
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.");
}
}
}
}
}
使用CMS.Base;
使用CMS.OnlineForms;
使用制度;
///
///允许您注册自定义处理程序方法和类的分部类。
///将CustomFormHandlers属性添加到分部类。
///
[自定义表单处理程序]
公共部分类CMSModuleLoader
{
///
///自定义属性类。
///
私有类CustomFormHandlers:CMSLoaderAttribute
{
///
///在应用程序启动时自动调用
///
公共重写void Init()
{
BizFormItemEvents.Insert.Before+=FormItem\u InsertBeforeHandler;
}
///
///在用户为表单创建新记录时处理表单数据
///
私有void FormItem_InsertBeforeHandler(对象发送方,BizFormItemEventArgs e)
{
BizFormItem formDataItem=e.项;
if(formDataItem!=null&&formDataItem.BizFormClassName==“bizform.formname”)
{
//如果发现重复的电子邮件,CreateUser返回false
如果(!CreateUser(formDataItem))
{
//这里需要发生一些事情
//更改bizform的错误消息
//e.取消();
抛出新异常(“具有此电子邮件地址的用户已存在。”);
}
}
}
}
}
我不确定您是否可以在BizFormItemEvent.Insert.Before事件中执行此操作。尝试为该字段实施自定义验证规则:
- 它将阻止表单被保存
- 它将允许您指定验证错误消息