在 ASP.NET Core 2.1 中将 json 数据列表传递给 HttpPost 控制器

Posted

技术标签:

【中文标题】在 ASP.NET Core 2.1 中将 json 数据列表传递给 HttpPost 控制器【英文标题】:Passing json data list to HttpPost controller in ASP.NET Core 2.1 【发布时间】:2020-04-12 20:42:36 【问题描述】:

我有一个模型:

public class NotificationsDeliveryTypesIds

  public int NotificationGroupId  get; set; 
  public int DeliveryTypeId  get; set; 
  public int UserNotificationTypeDeliveryChoiceId  get; set; 
  public bool Selected  get; set; 

在我的HomeController 我有:

[HttpPost]
[AllowAnonymous]
public void SaveNotifications(List<NotificationsDeliveryTypesIds> selectedNotificationDeliveryTypesIds)


我在我的 SaveNBotifications 方法中放置了一个调试器,我试图从 Postman 调用它,但我得到了:

400 错误 - 错误请求。

我正在尝试通过身体:

[
"NotificationGroupId": 1,
"DeliveryTypeId": 2,
"UserNotificationTypeDeliveryChoiceId": 3,
"Selected":true
]

当我输入asp-controllerasp-home 时,它会命中调试器。我可以在我的 chrome 调试器数据中看到:

selectedDeliveryTypes: 1,1,0
selectedDeliveryTypes: 3,2,271
selectedDeliveryTypes: 4,2,272
selectedDeliveryTypes: 4,1,273
selectedDeliveryTypes: 5,2,0

我希望能够从我的 Postman 中命中断点。

【问题讨论】:

你的控制器上有ApiControllerAttribute吗?如果没有,则添加它,或将[FromBody] 添加到操作参数中,例如[FromBody]List&lt;NotificationsDeliveryTypesIds&gt; selectedNotificationDeliveryTypesIds 你的控制器的名字是什么?它上面有属性吗?另外,你是在 localhost 上测试它吗? @RomanMarusyk 这不是问题,因为我删除了该列表作为参数并添加了虚拟输入(int? id = null),但仍然没有。如果我的 Body 在邮递员中设置为 none,因为 int 的预定义空值?需要绑定吗? @G.Dimov 是的,我在 localhost:44300 中测试它。每个方法也有注解,这个方法有[HttpPost]和[HttpAnonymous],我的控制器名称是HomeController 向我们展示potman的屏幕 【参考方案1】:

通过使用[FromBody] 属性修饰参数来修改您的控制器操作。

[HttpPost]
[AllowAnonymous]
public void SaveNotifications([FromBody] List<NotificationsDeliveryTypesIds> selectedNotificationDeliveryTypesIds)


【讨论】:

这不是问题,因为我看不到邮递员的方法 如果这是您在 Home 控制器上的唯一 POST 操作,您应该尝试通过在 http://[host:port]/Home 上执行 POST 来调用。如果您包含多个操作,则需要为每个发布操作指定路线,例如[HttpPost("&lt;some route&gt;")]【参考方案2】:

问题在于 AUthenticationCookie

【讨论】:

以上是关于在 ASP.NET Core 2.1 中将 json 数据列表传递给 HttpPost 控制器的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET Core 2.1 中将 json 数据列表传递给 HttpPost 控制器

在 ASP.net Core MVC 2.1 中创建文本文件并下载而不保存在服务器上

Asp Core MVC 2.1授权基于每个用户的策略?

在 ASP.net Core 中将对象转换为 Json

在 ASP.NET Core 中将 html 导出为 pdf

如何在 ASP.NET Core 中将角色添加到 Windows 身份验证