在这个清晨,我遇到了一个有点奇怪的错误。 错误很简单
参数字典在'TimeRegPlanner'中包含方法'System.Web.Mvc.ActionResult GeneratePDF(System.DateTime,System.DateTime)'的非空类型'System.DateTime'的参数'FirstDate'的空条目。 Controllers.TimeRegistrationController”。可选参数必须是引用类型,可为空的类型,或者必须声明为可选参数。 参数名称:参数
控制器看起来像这样
public ActionResult GeneratePDF(DateTime FirstDate, DateTime LastDate)
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
这是JavaScript:
function CreatePDF() {
var xyz = document.getElementById("regDate").valueAsDate
// var ShopDocCode = document.getElementById("werkkaart").value
var first = xyz.getDate() - xyz.getDay() + 1;
var last = first + 6; // last day is the first day + 6
var firstday = new Date(xyz.setDate(first)).toUTCString();
var lastday = new Date(xyz.setDate(last)).toUTCString();
alert(firstday);
alert(lastday);
var x = document.getElementById("checkBox").checked;
if (x === true) {
window.location = appPath + "/TimeRegistration/GeneratePDF?FirstDate=" + firstday + "&LastDate=" + lastday;
}
setTimeout(function () {
$("#dialog-Confirm").modal("hide");
}, 3000);
}
在第一天和最后一天调试和console.log时,我看到它们具有正确的值:
第一天:2019年6月24日星期一00:00:00 GMT最后一天:2019年6月30日星期日 00:00:00 GMT
答案 0 :(得分:1)
您应更改为ActionResult GeneratePDF(DateTime? FirstDate, DateTime? LastDate)
以防止出现大小写FirstDate
,并且LastDate
无法正确转换为DateTime
类型
如果您不想使用DateTime?
var firstday = new Date(xyz.setDate(first)).toISOString();
var lastday = new Date(xyz.setDate(last)).toISOString();
使用UTC字符串,无法将其强制转换为DateTime
答案 1 :(得分:1)
除了我以前从未见过valueAsDate之外,我当然会编码日期并删除路径中的空格
window.location = appPath + "/TimeRegistration/GeneratePDF"+
"?FirstDate=" + encodeURIComponent(firstday) +
"&LastDate=" + encodeURIComponent(lastday);