ASP.NET Core 6 MVC中Admin区域Login页面无法访问问题求助
问题排查:ASP.NET Core 6 MVC Admin区域Login页面404错误
核心问题分析
当前AdminController仅实现了[HttpPost]的Login方法,缺少处理GET请求的Login动作,同时需确认视图文件的存放路径是否符合区域视图规则。
具体排查点与解决方案
1. 补充GET请求的Login Action方法
现有代码仅包含处理表单提交的POST版Login,直接访问/Admin/Admin/Login时无对应GET方法响应,导致页面未找到。修改AdminController,添加GET版Login方法:
[Area("Admin")] public class AdminController : Controller { private UserManager<AppUserModel> _userManager; private SignInManager<AppUserModel> _signInManager; public AdminController(UserManager<AppUserModel> userManager, SignInManager<AppUserModel> signInManager) { _userManager = userManager; _signInManager = signInManager; } // 添加GET请求的Login方法,用于返回登录视图 public IActionResult Login() { return View(); } [HttpPost] public async Task<IActionResult> Login(UserModel user) { var result = await _signInManager.PasswordSignInAsync(user.UserName, user.Password, false, false); if (result.Succeeded) { return RedirectToAction("Index", "Admin"); } ModelState.AddModelError("", "用户名或密码错误"); // 登录失败返回原视图,保留错误信息(避免Redirect丢失状态) return View(user); } public IActionResult Index() { return View(); } }
2. 确认视图文件存放路径
ASP.NET Core MVC区域视图必须严格遵循路径规则:
- 登录视图需放在:
/Areas/Admin/Views/Admin/Login.cshtml - 目录结构要求:
Areas -> Admin -> Views -> [ControllerName] -> [ActionName].cshtml
若视图放在非区域目录(如/Views/Admin/),MVC引擎会无法找到视图文件。
3. 修正表单的区域路由指定(确保提交路径正确)
在Login视图的form标签中明确指定区域,避免路由生成错误:
<form asp-action="Login" asp-controller="Admin" asp-area="Admin"> <!-- 原有表单内容保持不变 --> </form>
内容的提问来源于stack exchange,提问作者Nghĩa Nghĩa
相关产品推荐
相关产品推荐

