48-Identity MVC:Model前后端验证

1-创建RegisterViewModel类

namespace MvcCookieAuthSample.ViewModel
{
    public class RegisterViewModel
    {
     
       [Required]
       [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

        [Required]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        [Required]
        [DataType(DataType.Password)]
        public string ConfirmPassword { get; set; }
    }
}

2-创建一个Register.cshtml前端页面 

asp-validation-for用于验证,如果加了 Html.PartialAsync("_ValidationScriptsPartial")则会启用客户端验证
<h3>Register</h3>
@model MvcCookieAuthSample.ViewModel.RegisterViewModel
<div class="row">
    <div class="col-md-4">
        <form method="post">
            <h4>register a new account</h4>
           <div asp-validation-summary="All" class="text-danger"></div>
            <hr />

            <div class="form-group">
                <label asp-for="Email"></label>
                <input asp-for="Email" class="form-control" />
                <span asp-validation-for="Email" class="text-danger"></span>
            </div>

            <div class="form-group">
                <label asp-for="Password"></label>
                <input asp-for="Password" class="form-control" />
                <span asp-validation-for="Password" class="text-danger"></span>
            </div>

            <div class="form-group">
                <label asp-for="ConfirmPassword"></label>
                <input asp-for="ConfirmPassword" class="form-control" />
                <span asp-validation-for="ConfirmPassword" class="text-danger"></span>
            </div>

            <button type="submit" class="btn btn-default">Register</button>
        </form>
    </div>
</div>

@section Scripts{
    @await Html.PartialAsync("_ValidationScriptsPartial") @*用于客户端验证*@
 }

3-在后端页面处理前端提交的请求

   [HttpPost]
        public async Task<IActionResult> Register(ViewModel.RegisterViewModel registerViewModel)
        {
            if (ModelState.IsValid)
            {
                Models.ApplicationUser applicationUser = new Models.ApplicationUser()
                {
                    Email = registerViewModel.Email,
                    UserName = registerViewModel.Email,
                    NormalizedEmail = registerViewModel.Email
                };

                IdentityResult result = await _userManager.CreateAsync(applicationUser, registerViewModel.Password);//注册
                if (result.Succeeded)
                {
                    await _signInManager.SignInAsync(applicationUser, true);//登陆
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    foreach(var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description); //增加错误信息
                    }
                }
            }           
            return View();
        }

猜你喜欢

转载自www.cnblogs.com/qinzb/p/9458068.html