2015-04-16 4 views
1

Я использую Enterprise Library 6 Validation в WCF. Я создал пользовательский валидатор. Когда я его использую, я указываю MessageTemplate. Когда ошибка возникает, вместо показа MessageTemplate отображается сообщение, указанное в DoValidate пользовательского валидатора.Корпоративная библиотека 6 Проверка для WCF: сообщение об ошибке пользовательского валидатора

валидатора

public sealed class EmailValidatorAttribute : ValidatorAttribute 
{ 
    protected override Validator DoCreateValidator(Type targetType) 
    { 
     return new EmailValidator(); 
    } 
} 

public sealed class EmailValidator : Validator 
{ 
    public EmailValidator() 
     : base("Email Validation", "String") 
    { 
    } 
    protected override string DefaultMessageTemplate 
    { 
     get { return "Email Validation"; } 
    } 
    // This method does the actual validation 
    public override void DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults) 
    { 
     Regex emailRegex = new Regex(IConnect.DataContract.WCFServiceResources.EmailRegex); 
     Match match = emailRegex.Match((string)objectToValidate); 
     if (!match.Success) 
     { 
      LogValidationResult(validationResults, "Invalid Email Address.", currentTarget, key); 
     } 
    } 
} 

WCF

[OperationContract] 
[FaultContract(typeof(ValidationFault))] 
string EmailAddressCheck([EmailValidator(MessageTemplate = "Enter a Valid Email ID.")]string email); 

В настоящее время он показывает "Неправильный адрес электронной почты." определено в DoValidate из валидатора кодекса

Но

Я хочу показать "Введите действительный адрес электронной почты ID." определены в MessageTemplate в WCF Кодекса

Как сделать так?

ответ

1

Наконец-то я нашел ответ на свой вопрос.

public override void DoValidate(
    object objectToValidate, 
    object currentTarget, 
    string key, 
    ValidationResults validationResults) 
{ 
    Regex emailRegex = new Regex(IConnect.DataContract.WCFServiceResources.EmailRegex); 
    Match match = emailRegex.Match((string)objectToValidate); 
    if (!match.Success) 
    { 
     LogValidationResult(
      validationResults, 
      // The next line does the trick 
      string.Format(this.MessageTemplate, new object[] { objectToValidate }), 
      currentTarget, 
      key); 
    } 
} 

деталь в LogValidationResult, что делает трюк является:

string.Format(this.MessageTemplate, new object[] { objectToValidate }) 

 Смежные вопросы

  • Нет связанных вопросов^_^