核心3.0 MVC区域路由在RedirectToAction中不起作用

时间:2019-12-07 15:50:53

标签: c# asp.net-core-mvc asp.net-core-3.0 asp.net-core-routing

在asp.net核心2.2 MVC中

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

工作正常。

但是在Core 3.0中,它不起作用。 Area作为查询字符串,例如

http://localhost:1876/?Areas=Dashboard

我的配置:

启动类

  1. ConfigureServices 方法

    services.AddMvc(option => option.EnableEndpointRouting = false);
    
  2. 配置方法

    app.UseMvc(routes =>
    {
        routes.MapRoute(
               name: "default",
               template: "{controller=Home}/{action=Index}/{id?}");
    
        routes.MapRoute(
               name: "Area",
               template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    });
    

1 个答案:

答案 0 :(得分:1)

根据此issue的2.2版本报告,您不再需要使用option.EnableEndpointRouting = false。另外,您的区域路由配置必须排在首位,例如:

app.UseMvc(routes =>
{
   routes.MapRoute(
       name: "Area",
       template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

   routes.MapRoute(
       name: "default",
       template: "{controller=Home}/{action=Index}/{id?}");

   });