Я создал новое действие для своей формы 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 вернуть ложь), сообщение об ошибке «Неправильный адрес электронной почты» будет отображаться в форме. После обновления до sitecore 8.1 с использованием веб-формы для маркетологов 8.1 rev 160523, Вместо этого я получу сообщение об ошибке «Сохранить действие по умолчанию», которое в моем случае «Мы испытывали технические трудности при обработке вашего запроса. Возможно, ваши данные были неверными спасены «. Я пробовал обновить сообщение об ошибке в верификации формы
но я все еще получаю сообщение об ошибке по умолчанию. Я подозреваю, что с обновлением они изменили поведение, и, поскольку я выбрал ArgumentException, WFFM рассматривает его как ошибку и отображает сообщение по умолчанию. Как отобразить пользовательское сообщение с помощью пользовательского действия «Отправить»?