我已经向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.");
}
}
}
}
}
答案 0 :(得分:3)
我会创建一个自定义表单控件,并在 IsValid 方法中实现验证。示例here。
答案 1 :(得分:1)
我不确定你能在BizFormItemEvent.Insert.Before事件中做到这一点。尝试为该字段实现自定义验证规则: