【发布时间】: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