[英]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(){}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.