立即模型状态 returns .Net Core 5

Model state returns right away .Net Core 5

我有一个自定义验证属性

public class IsUsernameAcceptableAttr:ValidationAttribute
{
    
    protected override ValidationResult IsValid(object username, ValidationContext validationContext)
    {
        var _username = username.ToString();
        if (_username.Length<4)
            return new ValidationResult("Username must be at least 4 characters.");
       
        return ValidationResult.Success;

    }
}

在我的 DTO class 我有

 public class UserAccountInformationDTO
    {
        [IsUsernameAcceptableAttr]
        public string Username { get; set; }


    }

在动作方法中我得到了

public IActionResult UpdateAccountInformationstring(UserAccountInformationDTO accountInfo)
    {
        var ms = ModelState.IsValid;
        return Ok();
        
    }

问题是当模型状态遇到错误时,它会在 errors 中将响应作为 JSON 响应发回。我从来没有在控制器中做任何事情或改变对我想要的格式的响应。我还能做什么?

您需要指定参数来源

https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-5.0#binding-source-parameter-inference

更新:

将以下代码添加到您的启动 ConfigureServices:

services.Configure<ApiBehaviorOptions>(apiBehaviorOptions => {
    apiBehaviorOptions.SuppressModelStateInvalidFilter = true;
});