javascript - 参数为空,但不应为空
问题描述
在这个清晨,我遇到了一个有点奇怪的错误。错误很简单
参数字典包含“TimeRegPlanner.Controllers.TimeRegistrationController”中方法“System.Web.Mvc.ActionResult GeneratePDF(System.DateTime, System.DateTime)”的不可为空类型“System.DateTime”的参数“FirstDate”的空条目'。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
控制器看起来像这样
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
解决方案
您应该更改为ActionResult GeneratePDF(DateTime? FirstDate, DateTime? LastDate)
以防止大小写FirstDate
,并且LastDate
不能正确转换为DateTime
类型
如果您不想使用,也应该在您的 JS 文件中使用DateTime?
var firstday = new Date(xyz.setDate(first)).toISOString();
var lastday = new Date(xyz.setDate(last)).toISOString();
使用 UTC 字符串,它不能转换为DateTime
推荐阅读
- reactjs - ReactJS 钩子。TypeError: Object(...) 不是函数
- nestjs - 如何让 websockets 与 NestJS 一起工作
- swift - 这意味着什么:“线程 1:”-[First_App.ProximitySensorViewControllerproximityChanged:]:无法识别的选择器发送到实例 0x14d707940“”
- java - 无法创建 HttpSolrClient
- php - Laravel - 将 DB::raw 的结果转换为字符串数组?
- c# - WithMaxRetry 图形 API 时间跨度和 MaxRetry
- python - 调用随机失败的外部 API
- c# - 将实体框架 DbSet 对象绑定到 DevExpres xtrareports
- data-distribution-service - 发送大尺寸数据导致`DDS_OctetsPlugin_serialize:值长度不能大于分配大小`
- angular - 无法在 Angular 上创建新项目