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

ASP.NET Core 5 MVC 登录成功后如何重定向至Area区域内的视图

解决Area重定向路径错误方案

第一步:确认Area路由已正确注册

这是最常见的报错原因,路由配置未正确识别Area参数,无法将area参数转换为路径前缀。

针对ASP.NET Core 6+(Program.cs)

路由配置要优先匹配Area规则,示例如下:

var builder = WebApplication.CreateBuilder(args);
// 添加控制器服务
builder.Services.AddControllersWithViews();

var app = builder.Build();

// 中间件配置略...
app.UseRouting();

// 先注册Area路由,再注册默认路由
app.MapControllerRoute(
    name: "areas",
    pattern: "{area:exists}/{controller=Home}/{action=Dashboard}/{id?}");
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

针对ASP.NET MVC 5(.NET Framework)

确保Global.asax.cs中先调用AreaRegistration.RegisterAllAreas(),再注册全局路由:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas(); // 必须放在路由注册之前
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

第二步:使用正确的重定向写法

路由配置正确的前提下,你写的第一种写法本身参数规则是正确的:

return RedirectToAction("Dashboard", "Home", new { Area = "StaffAug"});

如果存在根目录下HomeController和Area内HomeController重名冲突的情况,需要在Area注册时指定命名空间,并关闭命名空间回退,也可以直接使用RedirectToRoute明确指定Area路由,避免歧义:

return RedirectToRoute("areas", new { area = "StaffAug", controller = "Home", action = "Dashboard" });

可选:属性路由显式指定路径

如果不想依赖全局路由配置,可以直接给Area内的控制器加属性路由,优先级高于全局路由:

[Area("StaffAug")]
[Route("StaffAug/[controller]/[action]")] // 显式指定路径前缀
public class HomeController : Controller 
{ 
    private readonly ILogger<HomeController> _logger; 
    public HomeController(ILogger<HomeController> logger) { _logger = logger; } 
    public IActionResult Dashboard() { return View(); } 
}

内容的提问来源于stack exchange,提问作者Mohan Raju

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:04