jquery - 使用 DTO 对象作为参数将数据提交到 Web API
问题描述
我有这个 Ajax 发布功能,链接到一个带有属性“data-gig-id”的按钮。
按下按钮时调用 Web API。下面的示例完全有效,但我不明白原因。ajax 函数使用 gigId 参数(?)发出发布请求,然后调用控制器,传递的对象是 DTO,它似乎是一个带有属性的包装器。
有人可以解释一下 ajax 帖子中的 gigId 变量是如何调用适当的 DTO 并传递给控制器的吗?ajax 中的 gigId 是小写的,而 DTO obj 是 GigId (?)。
我很困扰...
感谢你
<script>
$(document).ready(function () {
$(".js-toggle-attendance").click(function (e) {
var button = $(e.target);
$.post("/api/nameAPI", { gigId: button.attr("data-gig-id") })
... some code ...
});
});
</script>
这是关联的 DTO 对象
public class AttendanceDto
{
public int GigId { get; set; }
}
然后我有一个控制器
[HttpPost]
public IHttpActionResult Attend(AttendanceDto dto)
{
... some other code ...
return Ok();
}
解决方案
从这个页面我们可以看到:
对于复杂类型,Web API 尝试使用媒体类型格式化程序从消息正文中读取值。
这个格式化程序可以在 API 配置中更改,但我认为默认情况下 JSON 使用 Newtonsoft (de)serializer。就区分大小写而言,与此格式化程序匹配的属性名称不得要求完全匹配。
推荐阅读
- javascript - 正则表达式最多 4 位带点,只接受数字并用点分隔每千
- c# - Azure 函数从 azure devops 存储库中读取文件
- api - NextJS Stripe Webhook 原始正文
- python - 如何根据多个条件在熊猫数据框中插入列?
- python - 将某些列滑动 1 并插入新值
- javascript - 如何将日期转换为unix时间?
- reactjs - 传播运算符打字稿在反应道具中返回数组
- php - WooCommerce 最近的产品使用recent_products 短代码排除隐藏产品
- flutter - 导航后颤振主题恢复为默认值
- c++ - 是否可以连接可变参数宏的参数以形成变量名?