c# - 在 AspNetCore 2.2 的 ApiController 的单个操作中使用 FromRoute 和 FromQuery
问题描述
使用 ASP.NET Core 2.2 我有以下 ApiController 操作:
[ApiController]
public class PostController : Controller
{
[HttpGet("posts/{postId:int:min(1)}")]
public async Task<IActionResult> GetByPostId([FromQuery]GetByPostIdRequest request)
{
}
}
以下内容在哪里GetByPostIdRequest
:
public class GetByPostIdRequest
{
[FromRoute]
public Int32 PostId { get; set; }
public String LanguageCode { get; set; }
public IncludeExpression Include { get; set; }
}
所有参数获取值的唯一方法是:
FromQuery
采取行动,所以我没有错误Unsupported Media Type
FromRoute
在 Request 类里面有绑定 PostId 。
难道没有其他方法可以做到这一点吗?
我尝试了以下方法,这对我来说是合乎逻辑的,但不起作用:
[ApiController]
public class PostController : Controller
{
[HttpGet("posts/{postId:int:min(1)}")]
public async Task<IActionResult> GetByPostId([FromRoute, FromQuery]GetByPostIdRequest request)
{
}
}
解决方案
这是您可能正在寻找的包:HybridModelBinding。
它通过使用[FromHybrid]属性解决了ASP.NET中混合模型绑定的问题。您的模型将与请求正文中的数据绑定,然后使用来自路由或查询字符串属性的数据进行更新。
[ApiController]
public class PostController : Controller
{
[HttpGet("posts/{postId:int:min(1)}")]
public async Task<IActionResult> GetByPostId([FromHybrid]GetByPostIdRequest request)
{
}
}
推荐阅读
- ios - Swift - 内存管理
- javascript - FabricJS 大网格在缩小时失去了形状
- hadoop - Apache nutch 1.15 安装和运行问题
- javascript - js事件离开页面并返回
- html - Laravel Form 发布的 html 值被编码
- java - 将功能接口作为参数传递
- c# - Xamarin Switch ToggleEvent 导致循环
- python - 使用在 windows for linux 上创建的 conda env
- python-2.7 - 如何定义存储在函数中的字典?
- wordpress - 将带有数据的 wordpress 网站从 Azure 帐户更改到 Azure 上的另一个帐户