javascript - 由于语法无效 (ASP.NET),服务器无法处理 PUT 请求
问题描述
我正在尝试使用 ajax 发出 PUT 请求以更新 Rental 对象。这是ajax请求。请注意,img.attr("data-rental-id")
效果很好。
$("#rentals").on("click", ".js-update", function () {
var img = $(this);
var vm = {};
vm.id = parseInt(img.attr("data-rental-id"));
vm.dateReturned = new Date();
bootbox.confirm("Are you sure you want to mark this rental as returned?", function (result) {
if (result) {
$.ajax({
url: "/api/newRentals/" + img.attr("data-rental-id"),
type: "PUT",
data: vm,
success: function () {
alert('Updated');
}
});
}
});
});
这是我的 API 更新方法:
[HttpPut]
public IHttpActionResult UpdateRental(UpdatedRentalDto UpdatedRentalDto)
{
if (!ModelState.IsValid)
return BadRequest();
var rentalInDb = _context.Rentals.SingleOrDefault(r => r.Id == UpdatedRentalDto.Id);
if (rentalInDb == null)
return NotFound();
Mapper.Map(UpdatedRentalDto, rentalInDb);
_context.SaveChanges();
return Ok();
}
最后是我的 DTO:
public class UpdatedRentalDto
{
[Required]
public int Id { get; set; }
public DateTime DateReturned { get; set; }
}
理论上一切似乎都很好,但是,当我尝试运行它时,我得到:
HTTP400: BAD REQUEST - The request could not be processed by the server due to invalid syntax.
(XHR)PUT - http://localhost:57265/api/newRentals/1
这是否意味着数据变量 vm 有问题?有什么错误?
解决方案
我认为您的问题在于 javascrip - /C# 的日期时间格式。如果您在 javascript 中执行新日期(在我的浏览器版本中:2018 年 7 月 19 日星期四 12:31:40 GMT+0200(浪漫夏令时间)。您将其发送到服务器,它可能无法解析为 DateTime c#的领域。
1) 将 NewtonSoft.Json 的引用添加到您的 c# 项目中
2)添加一个 DateFormatConverter 类,这是我的示例
public class DateFormatConverter : IsoDateTimeConverter
{
public DateFormatConverter(string format)
{
DateTimeFormat = format;
Culture = new CultureInfo("nl-BE"); //use this to have CET time !
}
}
2)在你的dto中,你可以在你可以定义的地方使用这个属性(使用你想要的日期时间格式)
[JsonConverter(typeof(DateFormatConverter), "dd/MM/yyyy HH:mm")]
3)在javascript中添加对moment.js(一个非常流行的日期/时间处理库)的引用
4)在发送到服务器之前使用momentJS的格式化功能格式化您的日期时间
推荐阅读
- javascript - 如何将 Firebase 存储图像 url 保存到 firebase 数据库?
- sql - 无法根据特定数据显示总和的最小值和最大值
- javascript - 当列表为空时,使用 JS 使某些文本出现
- c# - .NET Core:播放存储在数据库内的字节 [] 块中的大型视频文件
- python - Python 请求 401 错误,但 url 在浏览器中打开
- node.js - 您应该使用带有无头 CMS 的后端吗?
- javascript - 如何在javascript中使用concat
- python - 返回模型 Django Rest Framework 的键/属性 JSON 对象而不是 JSON 数组
- html - 如何在 Django 模板中比较字典键和查询集值
- if-statement - 如何使用 AND 来检查汇编语言中的条件?