我们正在尝试将webapp的默认路由设置为区域中控制器上的操作。我们的项目设置如下:
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" });
}
}
这似乎工作正常。
答案 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?}");