Bind multiple parameters from route and body to a model in ASP.NET Core(在ASP.NET Core中将路由和主体中的多个参数绑定到一个模型)
本文介绍了在ASP.NET Core中将路由和主体中的多个参数绑定到一个模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在路径中提供了一个ID(&qot;.../api/mobile/Register/192&-192是ID),其余的参数则放在PUT-REQUEST的主体中。如何将它们绑定到包含所有参数的模型中?问题是ID没有映射,它始终为0:[HttpPut("registers/{id}")]
public async Task ModifyPaymentRegister(PaymentRegisterModifyRequestVm model)
{
var result = await financeService.ModifyPaymentRegisterAsync(model, CurrentUserId.Value);
...
}
[BindProperties(SupportsGet = true)]
public class PaymentRegisterModifyRequestVm
{
/// <summary>
/// Идентификатор реестра
/// </summary>
[FromRoute]
public int Id { get; set; }
/// <summary>
/// Описание реестра
/// </summary>
[FromBody]
public string Description { get; set; }
/// <summary>
/// Тип модификации реестра
/// </summary>
[FromBody]
public PaymentModifyType ModifyType { get; set; }
}
推荐答案
简单地说,您不能将object
从路由传递到操作方法。
若要将数据从路由传递到方法,路由参数名称必须与方法参数完全相同。如果您想要传递多个参数,您应该如下所示:
[HttpGet("api/v1/Users/{name}/{surname}")]
public string GetUser(string name,string surname)
{
return "Hello " + name + " " + surname;
}
此代码使用以下URL:
localhost:3001/api/v1/Users/Hamed/Moghadasi
localhost:3001/api/v1/Users?name=Hamed&surname=Moghadasi
但,我想说将复杂数据对象发送到API的正确方法是使用请求body
。因此,您可以使用[FromBody]
简单地将数据放入请求体并轻松地将其放入方法中,您的代码应该如下所示:
[HttpPut("registers")]
public async Task ModifyPaymentRegister([FromBody]PaymentRegisterModifyRequestVm model)
有关更深层次的信息,请访问this链接。 祝你好运。
这篇关于在ASP.NET Core中将路由和主体中的多个参数绑定到一个模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在ASP.NET Core中将路由和主体中的多个参数绑定到
基础教程推荐
猜你喜欢
- 创建属性设置器委托 2022-01-01
- C# - 如何列出发布到 ASPX 页面的变量名称和值 2022-01-01
- 从 VB6 迁移到 .NET/.NET Core 的最佳策略或工具 2022-01-01
- Page.OnAppearing 中的 Xamarin.Forms Page.DisplayAlert 2022-01-01
- 当键值未知时反序列化 JSON 2022-01-01
- 使用 SED 在 XML 标签之间提取值 2022-01-01
- C# - 将浮点数转换为整数...并根据余数更改整数 2022-01-01
- 覆盖 Json.Net 中的默认原始类型处理 2022-01-01
- 如何使用OpenXML SDK将Excel转换为CSV? 2022-01-01
- 我什么时候应该使用 GC.SuppressFinalize()? 2022-01-01