营销人员的 Web 表单自定义提交操作错误消息

Web Form for Marketers Custom Submit Action Error Message

我为继承自 WffmCheckAction class 的 WFFM 表单创建了新的提交操作,它基本上执行服务器端验证,以防客户端验证被绕过。我为此提交操作创建的自定义 class 如下所示:

public class EmailValidation : WffmCheckAction 
{
    public override void Execute(Sitecore.Data.ID formid, IEnumerable<ControlResult> fields, ActionCallContext actionCallContext = null)
    {
        ControlResult emailField = fields.FirstOrDefault<ControlResult>(f => f.FieldName.ToLowerInvariant().Trim().Equals(Constant.Cms.WFFM.Fields.Email.ToLowerInvariant()));

        if (emailField == null) //field not found.
            return;

        var emailVal = emailField.Value;
        if (emailVal != null && !string.IsNullOrEmpty(emailVal.ToString()))
        {
            if (!IsValidEmail(emailVal.ToString()))
            {
                throw new ArgumentException("Invalid Email Address");
            }
        }
    }

    bool IsValidEmail(string email)
    {
        try
        {
            var addr = new System.Net.Mail.MailAddress(email);
            return true;
        }
        catch
        {
            return false;
        }
    }
}

在 sitecore 6.5 上,如果电子邮件无效(IsValidEmail return false),将在表单中显示错误消息 "Invalid Email Address"。 使用 Web Form For Marketers 8.1 rev 160523 升级到 sitecore 8.1 后, 相反,我将获得默认的保存操作失败消息,在我的例子中是 "We experienced a technical difficulty while processing your request. Your data may not have been correctly saved." 我尝试更新表单验证中的错误消息

但我仍然收到默认错误消息。 我怀疑通过升级,他们改变了行为,并且因为我抛出了一个 ArgumentException,WFFM 将其视为错误并显示默认消息。 如何使用自定义提交操作显示自定义消息?

已确认为 Sitecore 错误。补丁的参考编号是 78434。