asp.net - ASP.NET CORE 2.1 FromRoute 和 FromBody 模型绑定
问题描述
我阅读了 Microsoft 关于构建 Web API的文档,但除了开发自定义模型绑定器之外,我没有看到有关如何合并路由和正文参数的示例。我相信我遗漏了一些东西,因为开发自定义模型绑定器似乎对于这项常见任务来说太过分了。如何告诉我的应用程序从路由参数和正文有效负载创建模型?
Request:
PUT /business/f8e5cf33-40b1-4b8e-8280-b1b60a459154
{"name": "MyBusiness", "street": "123 Main Street"}
Response:
400
{"Id": ["'Id' must not be empty."]}
// BusinessController
[Route("business/{id}")]
[ApiController]
public class BusinessController : Controller {
[HttpPut]
[ProducesResponseType(400)]
public ActionResult PutAsync(BusinessModel business) {
...
}
}
// BusinessModel
class BusinessModel {
// The `[FromRoute]` annotation has no affect
public Guid Id { get; set; }
public string Name { get; set; }
public string Street { get; set; }
}
解决方案
您可以在参数部分分隔两个标签。
// BusinessController
[Route("business/{id}")]
[ApiController]
public class BusinessController : Controller {
[HttpPut]
[ProducesResponseType(400)]
public ActionResult PutAsync([FromBody]BusinessModel business, [FromRoute] int id) {
...
}
}
然后将该 id 分配给模型,如果它是模型的一部分。
推荐阅读
- python - [python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"] 是做什么的?
- java - 如何将数据插入firebase,但在获得管理员应用程序批准后才会显示?
- c# - 使用 Html Agility Pack 在 Html 文档中按类名获取元素
- python - 如何在循环字典列表时将值存储在变量中
- scala - Scala 控制台不显示按范围顺序生成的元素
- c# - 当不同的客户端(连接到同一个端口)发送数据时,服务器端 TcpClient 的 stream.read 没有数据
- reactjs - 运行 onKeyDown 函数时转到 NavLink
- android - 如何知道静音铃声的 URI?
- python - 比较 Python 中的两个表并返回已更改的行
- flow-project - 运行/example/rllib/green_wave.py时如何解决tensorflow版本问题