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

时间:2016-08-12 07:53:10

标签: c# sitecore sitecore6 sitecore8 web-forms-for-marketers

我为WFFM表单创建了新的提交操作,该表单继承自WffmCheckAction类,基本上在绕过客户端验证的情况下进行服务器端验证。我为此提交操作创建的自定义类如下所示:

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返回false),则表单中将显示错误消息“无效的电子邮件地址”。 使用Web Form For Marketers 8.1 rev 160523升级到sitecore 8.1后, 我将改为默认保存操作失败消息,在我的情况下是“我们在处理您的请求时遇到技术问题。您的数据可能没有正确保存。” 我已尝试更新表单验证中的错误消息 enter image description here

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

1 个答案:

答案 0 :(得分:2)

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