繁体   English   中英

具有默认路由的属性路由

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM