问题描述
我在路径中提供了一个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链接。 祝你好运。