是否可以覆盖单个控制器的默认操作而不影响其余路由? 我目前有一个
的默认路线routes.MapRoute(
name: "Default",
template: "{controller}/{action}",
defaults: new { controller = "Book", action = "Index" }
);
这适用于一般情况,但我现在想添加一个AdminController,但我希望AdminController上的默认操作是Users,而不是Index。
我真的不想在这个控制器上使用属性路由,因为我们以后可能会更新默认路由,我希望尽可能保持集中和DRY。我只想让urls / Admin和/ Admin / Users路由到这个控制器中的Users操作。
我目前正在使用ASP.Net Core 2.0,意图在发布后立即转向2.1。它目前正在.Net Framework上运行,但我们想要在我们摆脱目前在框架上的一些依赖关系(不太可能是第一个版本)时立即升级到.Net Core。
有什么建议吗?
答案 0 :(得分:0)
请检查以下代码:
routes.MapRoute( 名称:“管理员”, 模板:“{controller} / {action}”, 默认值:new {controller =“Admin”,action =“Users”} );
答案 1 :(得分:0)
虽然使用属性路由更加密集,但您可以做到
routes.MapRoute(
name: "AdminDefault",
template: "Admin/{action}",
defaults: new { controller = "Admin", action = "Users" }
);
routes.MapRoute(
name: "Default",
template: "{controller=Book}/{action=Index}",
);
在控制器上使用属性路由它将是
[Route("[controller]")]
public class AdminController : Controller {
[HttpGet]
[Route("")] //Match GET admin
[Route("[action]")] //Match Get admin/users
public IActionResult Users() {
return View();
}
}
甚至
[Route("[controller]/[action=Users]")]
public class AdminController : Controller {
[HttpGet]
public IActionResult Users() {
return View();
}
}