我的 ModelState.IsValid 在 .Net7 上返回 false

问题描述 投票:0回答:1

我基本上正在尝试注册一个新用户。但 ModelState.IsValid 返回 false。我无法解决这个问题。我在这个项目中使用 Identity。

这是我的 UserRegisterController:

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using MobimentiBackend.Core.Concrete;
using MobimentiBackend.Dto.UserDtos;

namespace MobimentiBackend.API.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class UserRegisterController : ControllerBase
    {
        private readonly UserManager<User> _userManager;

        public UserRegisterController(UserManager<User> userManager)
        {
            _userManager = userManager;
        }

        [HttpPost("register")]
        public async Task<IActionResult> Register([FromBody]UserRegisterDto userRegisterDto)
        {
            if (ModelState.IsValid)
            {
                var user = new User()
                {
                    Name = userRegisterDto.Name,
                    Surname = userRegisterDto.Surname,
                    Email = userRegisterDto.Email,
                };
                var result = await _userManager.CreateAsync(user, userRegisterDto.Password);
                if (result.Succeeded)
                {
                    return Ok(user);
                }
            }
            if (userRegisterDto.Password != userRegisterDto.ConfirmPassword)
            {
                ModelState.AddModelError("ConfirmPassword", "Passwords are not matching.");
                return BadRequest(new { Message = "Failed registration", Errors = ModelState.Values.SelectMany(v => v.Errors) });
            }
            return BadRequest();

        }

    }
}

直接retun-rn BadRequest。我有用户模型。它继承了IdentiyUser。 这是代码:

using Microsoft.AspNetCore.Identity;

namespace MobimentiBackend.Core.Concrete
{
    public class User : IdentityUser
    {
        public string Name { get; set; }
        public string Surname { get; set; }
    }
}

我有 Dto,名称为 UserRegisterDto 这是代码:

namespace MobimentiBackend.Dto.UserDtos
{
    public class UserRegisterDto
    {
        public string Name { get; set; }
        public string Surname { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public string ConfirmPassword { get; set; }
    }
}

这是我的要求:

{
  "name": "test",
  "surname": "user",
  "email": "[email protected]",
  "password": "2~yEj7)w$Q",
  "confirmPassword": "2~yEj7)w$Q"
}

最后我添加了 Swagger 截图结果。你可以看看我的错误:

ModelState.IsValid 返回 false 但不是预期的

asp.net asp.net-core asp.net-web-api asp.net-identity
1个回答
0
投票

代码对我来说似乎很好,我希望问题在这里,'if (result.Succeeded){return Ok(user);}

what will happen if
CreateAsync
fails. Your method will
return BadRequest();`

© www.soinside.com 2019 - 2024. All rights reserved.