使用FluentValidation

时间:2017-01-06 13:07:14

标签: asp.net asp.net-web-api enums fluentvalidation

我在Web API项目中使用FluentValidation.WebApi 6.2.1.0。有没有办法用FluentValidation验证枚举并返回自定义消息?

我的控制器操作如下,

public IHttpActionResult Get([FromUri]CheckUpdateVM info)
{
    ...
}

我的模特,

[Validator(typeof(CheckUpdateVMValidator))]
public class CheckUpdateVM
{
    public DeviceTypes Device { get; set; }
}

我正在寻找类似的东西,

public class CheckUpdateVMValidator : AbstractValidator<CheckUpdateVM>
{
    public CheckUpdateVMValidator()
    {
        RuleFor(x => x.Device).Must(x => Enum.IsDefined(typeof(DeviceTypes), x)).WithMessage("xxx");
    }
}

使用上面的代码,Model binder验证&#34; Device&#34;的值。参数和响应有错误。但我无法自定义错误消息。 (如果我将&#34; Device&#34;属性类型设置为字符串,则可以正常工作。)

1 个答案:

答案 0 :(得分:1)

在这种情况下,创建自定义验证器可能是更好的方法。

<a onclick="interface.callFromJS()" href="inapp://capture" ontouchstart="">Your Button Message</a>

要使用DeviceEnumValidator,您可以在定义验证规则时调用SetValidator。

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {

        if (request.url?.scheme == "inapp")
        {
            doYourAction()      
        }

        return true

    }