You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:01:02