如何解决如何在 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 举报,一经查实,本站将立刻删除。