ASP.NET MVC 6中使用默认URL的路由错误

时间:2016-04-29 12:13:53

标签: asp.net-mvc-routing asp.net-core-mvc asp.net-core-1.0

我在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());
}

1 个答案:

答案 0 :(得分:4)

发生这种情况的原因是,通过routes.MapRoute指定的路由仅适用于使用基于属性的路由的控制器。由于您的第二个示例是使用基于属性的路由,因此只能通过属性中指定的路径访问控制器。所以它只能在/ Dashboard / Index

上达到