我正在使用moment().startOf("week")
和endOf("week")
来建立日期范围,然后将其发布到控制器。我将.format()应用于已发布的值,控制器正在使用DateTime。
在Request Payload中,格式化JSON并且值在那里。在控制器,他们不是。见下文。
我错过了什么?我尝试了一些不同的东西,只发送一个日期,而不是格式化等等。
传出JSON
var weekStart = moment().startOf("week").format();
var weekEnd = moment().endOf("week").format();
$.ajax({
url: "/Timesheets/TaskHoursByPersonForCurrentWeek",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({personId: @User.FindFirst("Id").Value, ws: weekStart, we: weekEnd}),
success: function (result){
$('#cyearhours').append(result.total);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#toast-container").remove();
toastr.options.positionClass = 'toast-top-full-width';
toastr.options.timeOut = 10000;
toastr.error("Fail: We weren't able to get your hours for this week.");
}
});
{personId:1,ws:“2017-02-19T00:00:00 + 00:00”,我们: “2017-02-25T23:59:59 + 00:00”}
控制器
[HttpPost]
public async Task<JsonResult> TaskHoursByPersonForCurrentWeek(int personId, DateTime ws, DateTime we)
{
var hours = await dbcontext.Timesheet
.Where(t => !t.Deleted)
.Where(t => t.PersonId == personId)
.Where(t => t.TaskStart >= ws && t.TaskEnd < we )
.GroupBy(t => t.PersonId)
.Select(group => new
{
total = group.Sum(x => x.Minutes) / 60
}).SingleOrDefaultAsync();
return Json(hours);
}