gpt4 book ai didi

c# - 属性路由继承

转载 作者:太空狗 更新时间:2023-10-29 23:05:01 24 4
gpt4 key购买 nike

我之前一直在我的 MVC 应用程序中使用这种方法

[Route("admin")]
public class AdminController : Controller
{

}

[Route("products")]
public class ProductsAdminController :AdminController
{
[Route("list")]
public IActionResult Index()
{
...
}
}

Url.RouteUrl() Index 操作返回 /admin/products/list/

现在在 .NET Core 中它忽略基类路由属性并且结果只是 /products/list/这是 .NET Core 的新功能吗?是否有任何设置使系统可以组合action + controller + base-controller 路由?

最佳答案

我找不到一种方法来组合 action + controller + base-controller automatically,但是可以这样实现你想要的:

[Route("admin")]
public class AdminController : Controller { }

public class ProductsAdminController : AdminController
{
[Route("products/list")]
public IActionResult Index()
{
...
}
}

这种方法最终会生成 /admin/products/list 的 URL,其明显的缺点是 products 是每次操作都需要重复的内容。这可能是一个可以接受的妥协;这由你决定。你可以用一个常量让它变得更好一点,像这样:

private const string RoutePrefix = "products";

[Route(RoutePrefix + "/list")]
public IActionResult Index()
{
...
}

它并不漂亮,因为它只是一种解决方法,但如果您不想使用 Chris Pratt's Areas suggestion,则值得考虑.

关于c# - 属性路由继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52335344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com