【问题标题】:Set default route to controller in an area设置区域内控制器的默认路由
【发布时间】:2018-01-16 13:29:24
【问题描述】:

我们正在尝试将我们的 web 应用程序的默认路由设置为区域中控制器上的操作。我们的项目设置如下所示:

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 页面。它试图访问的 URL 是: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?}");
});

然后在执行简单重定向的区域中有一个 HomeController:

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

这似乎工作正常。

【问题讨论】:

  • 可能你也应该在默认路线中指定区域
  • @Bharadwaj 我们曾尝试过,但从未成功。您有我们如何定义该区域的示例吗?
  • 在模板中尝试在{controller=Home}之前添加{area=Dashboard}
  • @Bharadwaj 不幸的是,我们之前尝试过,但没有成功。
  • 该地区会有一个注册文件。你在里面配置这个吗?

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


【解决方案1】:

将路由更改为此,不要忘记在浏览器中使用 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?}");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2016-07-03
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多