jquery - 如何在ajax post请求asp.net core mvc razor中发送对象数组
问题描述
我正在尝试将对象数组发送到 web Api post ActionResult 方法
我的对象数组看起来像这样
model:[{"Status":"HOLD","MessageId":1},{"Status":"HOLD","MessageId":2}]
在 .cshtml 文件中发布来自前端的请求
$.ajax({
method: 'post',
url: "Home/postMessage",
data: JSON.stringify(model),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data)
}
});
web api 代码看起来像这样
PostStatus 模型
public class PostStatus
{
public string Status { get; set; }
public int MessageId { get; set; }
}
在控制器中发布请求代码
[HttpPost]
public ActionResult postMessage(PostStatus model)
{
return Json(new { data = model });
}
调试上述 web api 发布请求代码的片段
我无法找到导致问题的问题。
解决方案
从您的客户端代码中,您正在发送一个项目数组,但在您的服务器端操作方法中,您的操作方法参数是PostStatus
类的单个对象。当表单提交时,默认模型绑定器将读取并解析提交的表单数据并尝试将其映射到您的参数对象属性值。由于您的参数类型和发布的数据是不同的类型,模型绑定器无法正确映射值。
您应该使用集合类型作为参数,模型绑定器将能够将发布的表单数据绑定到该参数。还使用属性装饰您的操作方法参数FromBody
,该属性告诉模型绑定器从请求正文中读取数据。
[HttpPost]
public ActionResult postMessage([FromBody] IEnumerable<PostStatus> model)
{
return Json(new { data = model });
}
推荐阅读
- java - 多线程中的条件
- c++ - 无需从其他 OpenCV 矩阵复制到 cv::Mat 和 cv::UMat 的数据分配
- javascript - 未捕获的 ReferenceError: $ 未在 Rails 5.2 中定义
- django-views - 在 Django 中反向重定向和解析变量
- android - 在 Processing with Android 模式下保存 CSV 文件
- reactjs - 如何使用从 Auth0 响应返回的相同消息?
- java - java中从double到int的可能有损转换错误
- node.js - Node JS Mongoose 异步回调
- java - 如何在junit测试中比较两个bytearrayinputstream?
- c# - 添加到列表时的预期行为是什么
从多个线程?