我之前一直在我的 MVC 应用程序中使用这种方法
[Route("admin")]
public class AdminController : Controller
{
}
[Route("products")]
public class ProductsAdminController :AdminController
{
[Route("list")]
public IActionResult Index()
{
...
}
}
网址.RouteUrl() for Index返回的操作/管理/产品/列表/
现在在 .NET Core 中它忽略基类路由属性,结果只是/产品/列表/这是 .NET Core 的新功能吗?有没有什么设置可以让系统结合起来动作 + 控制器 + 基础控制器 routes?
我找不到结合的方法动作 + 控制器 + 基础控制器 自动地,但有可能实现您想要的目标,如下所示:
[Route("admin")]
public class AdminController : Controller { }
public class ProductsAdminController : AdminController
{
[Route("products/list")]
public IActionResult Index()
{
...
}
}
这种方法最终会生成一个 URL/admin/products/list
,有一个明显的缺点products
是每个动作都需要重复的事情。这可能是一个可以接受的妥协方案;这由你决定。你可以把它变成一个bit最好用一个常数,如下所示:
private const string RoutePrefix = "products";
[Route(RoutePrefix + "/list")]
public IActionResult Index()
{
...
}
它并不漂亮,因为它只是一种解决方法,但如果您不想使用,则值得考虑克里斯·普拉特的区域建议 https://stackoverflow.com/a/52335890/2630078.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)