使用默认路由的属性路由
Attribute Routing with Default Route
使用基于属性的路由我想匹配以下路由:
~/
~/Home
~/Home/Index
到HomeController.Index,这条路线:
~/Home/Error
到HomeController.Error。这是我的配置:
[Route("[controller]/[action]")]
public class HomeController : Controller {
[HttpGet, Route(""), Route("~/")]
public IActionResult Index() {
return View();
}
[HttpGet]
public IActionResult Error() {
return View();
}
}
我已尝试添加 Route("[action]")
、Route("Index")
和其他组合,但仍然无法匹配:
/Home/Index
空路由Route("")
与控制器上的路由结合,使用Route("/")
覆盖它而不是与它结合:
[Route("[controller]/[action]")]
public class HomeController : Controller {
[HttpGet]
[Route("/")]
[Route("/[controller]")]
public IActionResult Index() {
return View();
}
[HttpGet]
public IActionResult Error() {
return View();
}
}
或者,您可以删除控制器上的 /[action]
,这样会更容易一些(无需覆盖),但是您必须为每个动作定义一条路线。
我假设您有意使用属性路由而不是常规路由,所以上面的答案就是您所需要的。但是,以防万一假设错误,这可以通过简单的常规路由轻松实现:
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
[Route("[controller]")]
public class HomeController : Controller
{
[Route("")] // Matches 'Home'
[Route("Index")] // Matches 'Home/Index'
public IActionResult Index(){}
[Route("Error")] // Matches 'Home/Error'
public IActionResult Error(){}
}
使用基于属性的路由我想匹配以下路由:
~/ ~/Home ~/Home/Index
到HomeController.Index,这条路线:
~/Home/Error
到HomeController.Error。这是我的配置:
[Route("[controller]/[action]")]
public class HomeController : Controller {
[HttpGet, Route(""), Route("~/")]
public IActionResult Index() {
return View();
}
[HttpGet]
public IActionResult Error() {
return View();
}
}
我已尝试添加 Route("[action]")
、Route("Index")
和其他组合,但仍然无法匹配:
/Home/Index
空路由Route("")
与控制器上的路由结合,使用Route("/")
覆盖它而不是与它结合:
[Route("[controller]/[action]")]
public class HomeController : Controller {
[HttpGet]
[Route("/")]
[Route("/[controller]")]
public IActionResult Index() {
return View();
}
[HttpGet]
public IActionResult Error() {
return View();
}
}
或者,您可以删除控制器上的 /[action]
,这样会更容易一些(无需覆盖),但是您必须为每个动作定义一条路线。
我假设您有意使用属性路由而不是常规路由,所以上面的答案就是您所需要的。但是,以防万一假设错误,这可以通过简单的常规路由轻松实现:
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
[Route("[controller]")]
public class HomeController : Controller
{
[Route("")] // Matches 'Home'
[Route("Index")] // Matches 'Home/Index'
public IActionResult Index(){}
[Route("Error")] // Matches 'Home/Error'
public IActionResult Error(){}
}