c# - 无法通过 ajax 发布模型
问题描述
我正在使用Ajax制作模型并将其发送到控制器。
这是模型:
public class PersonDto{
public Guid Id { get; set; }
public int PersonAge { get; set; }
public string PersonName { get; set; }
public DateTime? DateCreated { get; set; }
}
这是控制器:
[Route("EditPerson")]
[HttpPost]
public async Task<IActionResult> EditPerson(PersonDto offer) {
//Save to Entity FW
}
这是阿贾克斯:
var data = {
Id: $('#personModal #personModalTitle').text(),
PersonAge: $('#personModal #personId').val(),
PersonName: $('#personModal #personName').val()
};
var dataJson = JSON.stringify(data);
console.log(dataJson);
$.ajax({
type: 'POST',
url: 'Persons/EditPerson',
data: dataJson,
contentType: "application/json",
success: function (result) {
},
error: function (error) {
Alert("Error Saving offer changes!");
}
});
这是控制台日志(Json),一切看起来都很棒:
{"Id":"96f2ae80-45cc-4a6c-abe0-230c2cbd3043","PersonAge":"5","PersonName":"John"}
当我调试 PersonsController
时,我看到我的模型从未填充,不为空,只是其中没有数据。
我尝试添加DateCreated
到模型中我尝试在Ajax,我尝试将Age解析为 int。
我尝试将[FromBody]
注释添加PersonDto
到Action,然后我的模型得到NULL。
我不知道我可以在哪里出错。
解决方案
对于 JSON 编码的 body ,只需添加一个[FromBody]
:
[Route("EditPerson")]
[HttpPost]
public async Task<IActionResult> EditPerson([FromBody] PersonDto offer)
{
return new JsonResult(offer);
}
更新 :
另一种方法是使用 a
[ApiController]
来装饰控制器类。如果没有
[ApiController]
,您应该添加一个[FromBody]
以强制模型绑定器从 body 读取。是否是 camelCased 或 pascalCased 有效载荷或不重要。没什么区别 。
骆驼香烟盒 :
POST https://localhost:44372/api/values/EditPerson HTTP/1.1
Content-Type : application/json
{"id":"96f2ae80-45cc-4a6c-abe0-230c2cbd3043","personAge":"5","personName":"John"}
帕斯卡案例:
POST https://localhost:44372/api/values/EditPerson HTTP/1.1
Content-Type : application/json
{"Id":"96f2ae80-45cc-4a6c-abe0-230c2cbd3043","PersonAge":"5","PersonName":"John"}
推荐阅读
- php - 输入数据后无法重定向到其他页面,即使数据已经记录在数据库中
- java - 在 Hibernate Spring Boot 中覆盖外键和唯一约束创建
- apache - 从 IP 地址重定向到另一个并保留 url 的其他部分
- node.js - 我正在将基本节点应用程序上传到 aws elastic beanstalk,当我进入环境时收到 502 bad gateway 响应
- ios - Swift:如何从 watchos 中的选取器中删除绿色边框?任何选择器样式?
- matplotlib - 自定义条形图matplotlib中的高度
- reactjs - 在 nextjs 中更改页面滚动上的标题背景颜色
- rust - 获得具有特定字段的向量的更好方法是形成结构向量?
- sql - 查询以获取多个类中的成员索引?
- c# - 单元测试中动态转换失败的通用解决方案