在ASP.NET Core中将路由和主体中的多个参数绑定到一个模型
- 作者: baby曼曼
- 来源: 51数据库
- 2022-10-19
问题描述
我在路径中提供了一个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链接。 祝你好运。
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
