2 回答
![?](http://img1.sycdn.imooc.com/5458657e000125a302200220-100-100.jpg)
TA贡献1831条经验 获得超9个赞
您可以在同一应用程序中同时使用属性路由和常规路由。但是,一旦您使用属性路由标记控制器或操作,就无法使用传统路由路由到该控制器或操作。您仍然可以将常规路由用于其他控制器。
如果您希望属性路由使用 /products 那么您可以更改它:
[Route("~/products")]
public class ProductsController : Controller
{
[HttpGet("{id:int}")]
public IActionResult ById(int id)
{
...
}
}
但是您不能对同一个控制器/操作使用两种类型的路由
我所知道的唯一解决方法是您可以创建另一个控制器,该控制器从具有属性路由的控制器继承(使操作方法虚拟)。然后,您可以使用新的子类控制器取消属性路由,您可以使用常规路由路由到它,只需调用基类操作方法。
例子:
namespace MyNamespace
{
public class ProductsController : Controller
{
[HttpGet("{id:int}")]
public virtual IActionResult ById(int id)
{
...
}
}
}
namespace MyOtherNamespace
{
public class ProductsController : MyNamespace.ProductsController
{
public override IActionResult ById(int id)
{
base.ById(id);
}
}
}
现在您可以使用常规路由路由到 ProductsController,而基本控制器使用属性路由。
- 2 回答
- 0 关注
- 200 浏览
添加回答
举报