微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 asp.net mvc 核心中覆盖控制器的名称?

如何解决如何在 asp.net mvc 核心中覆盖控制器的名称?

在我的 MVC 控制器中,我有两个正在呈现 View 的操作方法,其他 6 个操作方法SELECT some_column FROM your_table WHERE (@y is null or y >= @y) HttpGet。我想做以下

对于呈现视图的 ActionMethods,它将是 “控制器/动作”。但是对于GET/POST,我希望它是api/whatevernameilike

是否可以在 HttpPost 中实现?

TIA

解决方法

Attribute Routing in ASP.NET Web API 2 有一个例子:

在方法属性上使用波浪号 (~) 来覆盖路由前缀:

[RoutePrefix("api/books")]
public class BooksController : ApiController
{
    // GET /api/authors/1/books
    [Route("~/api/authors/{authorId:int}/books")]
    public IEnumerable<Book> GetByAuthor(int authorId) { ... }

    // ...
}

Routing to controller actions in ASP.NET Core 显示以下内容:

[Route("[controller]/[action]")]
public class HomeController : Controller
{
    [Route("~/")]
    [Route("/Home")]
    [Route("~/Home/Index")]
    public IActionResult Index()
    {
        return ControllerContext.MyDisplayRouteInfo();
    }

    public IActionResult About()
    {
        return ControllerContext.MyDisplayRouteInfo();
    }
}

在前面的代码中,Index 方法模板必须在路由模板前面加上 / 或 ~/。应用于以 / 或 ~/ 开头的操作的路由模板不会与应用于控制器的路由模板组合在一起。

,

您可以在控制器顶部使用路由属性 例如:

[Route("Api/Yourchosenname")]
public async Task<IActionResult> Action()
{
    return Ok();
}
,

如果以前的方法不起作用,也值得一试:

[HttpGet("/api/whatevernameilike")]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。