首页 > 解决方案 > 我收到属性的模型状态错误我没有设置使用流利验证的规则

问题描述

我想执行一个补丁请求,因为模型状态无效,我为我设置规则的属性和我没有设置规则的 Id 属性遇到了验证错误。

注意:我在 startUp.cs 类中将 SuppressModelStateInvalidFilter 设置为 true。

这是我的模型的验证规则。

 public class UserForUpdateDtoValidator : AbstractValidator<UserForUpdateDTO>
{
    public UserForUpdateDtoValidator()
    {
        RuleFor(x => x.Phone)
            .NotEmpty().WithMessage("Enter a valid value")
            .Matches(@"^([0-9]{11})$").WithMessage("Enter a valid value");
        RuleFor(x => x.Gender)
            .NotEmpty().WithMessage("Enter a valid value")
            .Must((u, s) => s.ToLower() =="male" || s.ToLower() == "female")
            .WithMessage("Enter a valid value");
    }
}

我的动作看起来像这样

[HttpPatch]
    [Route("{id}")]
    [ProducesResponseType(typeof(SucessResponse<UserDTO>), 200)]
    public async Task<IActionResult> UpdateUser(UserForUpdateDTO model, Guid id)
    {
        try
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(new ErrorResponse<Dictionary<string, string[]>>
                {
                    success = false,
                    message = "User details update failed",
                    errors  = ModelState.Error()
                });
            }
        }
    }

这是我的错误信息

{
  "success": false,
  "message": "User details update failed",
  "errors": {
     "id": [],
     "phone": [
        "Enter a valid value"
     ],
    "gender": [
        "Enter a valid value"
     ]
   }
}

有没有办法从错误中排除 id 字段,因为我没有为它设置规则。

注意。如果性别和电话属性有效,则返回 200 OK 响应。

标签: .net-corefluentvalidationmodelstate

解决方案


推荐阅读