ASP.NET Core MVC登录遇HTTP ERROR 400:无法匹配[HttpPost]方法问题
ASP.NET Core MVC登录功能HTTP 400错误排查
问题现象
原本正常的ASP.NET Core MVC账户登录功能,在创建Identity自定义_PartialView后出现错误:
此页面无法正常工作
若问题持续,请联系网站管理员。
HTTP ERROR 400
浏览器地址为https://localhost:7185/Account/Login?returnurl=%2F,调试发现无法匹配控制器中的[HttpPost]方法,提示“未找到资源”。
相关代码
AccountController.cs
// Login [HttpGet] public IActionResult Login(string? returnUrl = null) { LoginAccountViewModel loginViewModel = new LoginAccountViewModel(); loginViewModel.ReturnUrl = returnUrl ?? Url.Content("~/")); return View(loginViewModel); } [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Login(LoginAccountViewModel loginViewModel, string returnUrl) { if (ModelState.IsValid) { var result = await _signInManager.PasswordSignInAsync(loginViewModel.UserName, loginViewModel.Password, loginViewModel.RememberMe, lockoutOnFailure: false); if (result.Succeeded) { return RedirectToAction("Index", "Home"); } else { ModelState.AddModelError(string.Empty, "Invalid login attempt."); return View(loginViewModel); } } return View(loginViewModel); }
Login.cshtml
<form asp-controller="Account" asp-action="Login" asp-route-returnurl="@Model.ReturnUrl" method="post" role="form"> <div class="p-4 p-md-5 border rounded-3 bg-body-tertiary"> <!-- Right Side --> <div class="col-md-5 col-lg-4 order-md-last"> <!-- OAuth --> </div> <!-- Left Side --> <div class="col-md-7 col-lg-8"> <h4 class="mb-3">Account Login Details</h4> <form class="needs-validation" novalidate=""> <div class="row g-3"> <!-- UserName --> <div class="col-12"> <label asp-for="UserName" class="form-label">Username</label> <div class="input-group has-validation"> <span class="input-group-text">@@</span> <input asp-for="UserName" type="text" class="form-control" id="username" placeholder="Username" required> <div class="invalid-feedback"> Your username is required. </div> </div> </div> <!-- Password --> <div class="col-12"> <label asp-for="Password" class="form-label">Password</label> <input asp-for="Password" type="password" class="form-control" id="password" placeholder="Password"> <div class="invalid-feedback"> Please enter atleast 6 characters. </div> </div> </div> <hr class="my-4"> <!-- Remember Me --> <div class="form-check"> <label asp-for="RememberMe"> <input asp-for="RememberMe" /> @Html.DisplayNameFor(m => m.RememberMe) </label> </div> <hr class="my-4"> <!-- Login --> <div class="form-group mb-3"> <button class="w-100 btn btn-primary btn-lg" type="submit">Login</button> </div> <hr class="my-4"> <!-- Register --> <p> <a class="mb-5" asp-action="Register">Havent Registered yet?</a> </p> </form> </div> </div> </form>
问题原因及解决办法
1. 嵌套表单导致提交目标异常
Login.cshtml中存在嵌套
相关产品推荐
相关产品推荐

