首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对WCF的企业库6验证:自定义Validator错误消息

针对WCF的企业库6验证:自定义Validator错误消息
EN

Stack Overflow用户
提问于 2015-04-16 07:17:21
回答 1查看 413关注 0票数 1

我正在WCF中使用Enterprise 6验证。我已经做了一个定制的Validator。当我使用它时,我指定了一个MessageTemplate。当发生错误时,它不是显示MessageTemplate,而是显示自定义验证器的DoValidate中给出的消息。

自定义Validator

代码语言:javascript
复制
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

代码语言:javascript
复制
[OperationContract]
[FaultContract(typeof(ValidationFault))]
string EmailAddressCheck([EmailValidator(MessageTemplate = "Enter a Valid Email ID.")]string email);

目前,它正在显示“无效电子邮件地址”。自定义Validator代码的DoValidate中定义的

我想向MessageTemplate 显示“输入有效的电子邮件ID”,是在WCF代码中定义的

如何做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2015-04-20 06:51:01

最后我找到了我的问题的答案。

代码语言:javascript
复制
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中发挥作用的部分是:

代码语言:javascript
复制
string.Format(this.MessageTemplate, new object[] { objectToValidate })
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29667873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档