我正在尝试在ASP.NET Core WebAPI中添加FluentValidation
进行模型验证,并且具有以下enum
:
public enum Foo
{
Value1 = 1,
Value2 = 2,
Value3 = 3
}
我的模特:
public class MyModel
{
public Foo MyEnum { get; set; }
}
我的FluentValidation规则:
public class MyModelValidator : AbstractValidator<MyModel>
{
public MyModelValidator ()
{
RuleFor(m => m.MyEnum ).IsInEnum().WithMessage("MyEnum should be Value1, Value2, or Value3.");
}
}
我的ActionFilter:
public class ValidatorActionFilter : Attribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.ModelState.IsValid)
{
filterContext.Result = new BadRequestObjectResult(filterContext.ModelState);
}
}
}
最后是我的ASP.NET Core WebAPI ActionMethod:
[HttpPost]
[ValidatorActionFilter]
public IActionResult SomeAction([FromBody]MyModel request)
{
//implementation
return Ok("success");
}
当我使用1
,2
,3
或"Value1"
,"Value2"
,"Value3"
发布到动作方法时,验证通过当这些值与枚举Foo
匹配时,将调用action方法。当我使用integer
,1
,2
以外的3
值发布时,我收到错误消息MyEnum should be Value1, Value2, or Value3.
,该错误消息是在MyModelValidator
中配置的
当我发布string
,"Value1"
,"Value2"
以外的"Value3"
值时,我一直收到错误消息The input was not valid.
,而不是在其中配置的错误消息MyModelValidator
。如何使用验证器规则中配置的消息更改此消息?无论如何,有没有修改此消息?想知道此消息来自何处。