我在MVC 6 Web应用程序中遇到路由问题:当我在默认使用的控制器中设置route参数时,应用程序发送404错误。
我的路由配置:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Dashboard}/{action=Index}/{id?}");
});
我的仪表板控制器(应用程序正常):
[Authorize]
public class DashboardController : Controller
{
public DashboardController()
{ }
[HttpGet]
public IActionResult Index() => View(new IndexViewModel());
}
相同的仪表板控制器(应用程序响应404错误):
[Authorize]
[Route("[controller]")]
public class DashboardController : Controller
{
public DashboardController()
{ }
[HttpGet]
[Route("[action]")]
public IActionResult Index() => View(new IndexViewModel());
}
答案 0 :(得分:4)
发生这种情况的原因是,通过routes.MapRoute
指定的路由仅适用于使用基于属性的路由不的控制器。由于您的第二个示例是使用基于属性的路由,因此只能通过属性中指定的路径访问控制器。所以它只能在/ Dashboard / Index