传统的路由默认值意味着我们能够访问这些URL并始终以相同的操作结束:
/ /Home /Home/Index
但今天我们将在这些方面写一些东西:
[RoutePrefix("Home")] [Route("{action=Index}")] public class HomeController { public ActionResult Index() {} public ActionResult ... }
但是这种路由定义绝不相同.
/ (fails) /Home (works) /Home/Index (works)
因此,如果我们将上层代码更改为
[RoutePrefix("Home")] [Route("{action=Index}")] public class HomeController { [Route("~/")] public ActionResult Index() {} public ActionResult ... }
但随后我们将处理工作颠倒过来:
/ (works) /Home (fails) /Home/Index (fails)
我们可以使声明性代码更加冗长,并通过以下方式使其成为旧式路由机制:
[RoutePrefix("Home")] [Route("{action=Index}")] public class HomeController { [Route("~/")] [Route("~/Home")] [Route("~/Home/Index")] public ActionResult Index() {} public ActionResult ... }
这适用于所有三种不同的路线.
此问题当然绑定到默认控制器和操作的应用程序默认操作.只是我想知道这是否是唯一的方法呢?有没有更简洁的代码方式让它按预期工作?