我为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后, 我将改为默认保存操作失败消息,在我的情况下是“我们在处理您的请求时遇到技术问题。您的数据可能没有正确保存。” 我已尝试更新表单验证中的错误消息
但我仍然收到默认的错误消息。 我怀疑通过升级,他们已经改变了行为,并且因为我抛出了ArgumentException,WFFM将其视为错误并显示默认消息。 如何使用自定义提交操作显示自定义消息?
答案 0 :(得分:2)
确认为Sitecore错误。补丁的参考编号是78434。