设置区域中控制器的默认路由

时间:2018-01-16 13:29:25

标签: c# asp.net asp.net-core asp.net-core-2.0

我们正在尝试将webapp的默认路由设置为区域中控制器上的操作。我们的项目设置如下:

enter image description here

AccountController看起来像这样:

[Area("Dashboard")]
public class AccountController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

在我们的startup.cs中,我们映射区域路由和默认路由,如下所示:

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

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

我们希望在AccountController中使用一个操作作为我们的默认路由,但是当我们这样做时,我们会收到一条错误,指出无法找到localhost页面。它尝试访问的网址是:http://localhost:56893/

如果我们将startup.cs文件更改为这样:

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

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

然后在Area中有一个HomeController进行简单的重定向:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return RedirectToAction("Index", "Account", new { area = "Dashboard" });
    }
}

这似乎工作正常。

1 个答案:

答案 0 :(得分:0)

将路由更改为此,并且不要忘记在浏览器中使用control + 5

 routes.MapRoute(
                name: "areas",
                template: "{area:exists}/{controller=Account}/{action=Index}/{id?}");

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