ASP.NET Core 模型验证的一个小小坑

在ASP.NET Core项目中,若模型的bool属性接收到null值,系统不仅会使用默认值,还会意外触发模型验证失败,导致ModelState.IsValid为false。此行为可能引发用户请求失败,开发者需留意此潜在问题。
摘要由CSDN通过智能技术生成

今天在我们的一个项目中遇到一个 asp.net core 模型验证(model validation)的小问题。当模型属性的类型是 bool ,而提交上来的该属性值是 null ,asp.net core 在模型绑定时会使用该属性的默认值(这很好),但是除此之外 asp.net core 做了一个额外的小动作, 会触发模型验证失败(ModelState.IsValid 为 false),下面用示例代码看一下。

示例 Controller 代码

public class SignInModel
{
    public bool IsRemember { get; set; }
}

public class AccountController : Controller
{
    public IActionResult SignIn([FromForm]SignInModel model)
    {
        Console.WriteLine(ModelState.IsValid);

        if(!ModelState.IsValid)
        {
            var errors = ModelState.Select(s => new
            {
                s.Key,
                Value = string.Join("\n", s.Value.Errors.Select(e => e.ErrorMessage))
            });
            Console.WriteLine(JsonConvert.SerializeObject(errors));
        }

        Console
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值