ASP.NET MVC 6 中默认 url 的路由错误
Routing error with default url in ASP.NET MVC 6
我在 MVC 6 Web 应用程序中遇到路由问题:当我在默认使用的控制器中设置路由参数时,应用程序发送 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());
}
发生这种情况的原因是通过 routes.MapRoute
指定的路由仅适用于 未 使用基于属性的路由的控制器。由于您的第二个示例使用基于属性的路由,因此只能通过属性中指定的路由访问该控制器。所以只能在 /Dashboard/Index
到达
我在 MVC 6 Web 应用程序中遇到路由问题:当我在默认使用的控制器中设置路由参数时,应用程序发送 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());
}
发生这种情况的原因是通过 routes.MapRoute
指定的路由仅适用于 未 使用基于属性的路由的控制器。由于您的第二个示例使用基于属性的路由,因此只能通过属性中指定的路由访问该控制器。所以只能在 /Dashboard/Index