Параметр равен нулю, но не должен быть - PullRequest
0 голосов
/ 25 июня 2019

В это раннее утро я столкнулся с несколько странной ошибкой. Ошибка проста

Словарь параметров содержит пустую запись для параметра «FirstDate» необнуляемого типа «System.DateTime» для метода «System.Web.Mvc.ActionResult GeneratePDF (System.DateTime, System.DateTime)» в «TimeRegPlanner». 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 первый день и последний день, я вижу, что они имеют правильные значения:

первый день: понедельник, 24 июня 2019 года 00:00:00 GMT последний день: вс, 30 июня 2019 года 00:00:00 GMT

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Помимо того, что я никогда не видел valueAsDate раньше, я бы наверняка закодировал даты и удалил пробелы в пути

window.location = appPath + "/TimeRegistration/GeneratePDF"+
  "?FirstDate=" + encodeURIComponent(firstday) + 
  "&LastDate="  + encodeURIComponent(lastday);
1 голос
/ 25 июня 2019

Вы должны изменить на ActionResult GeneratePDF(DateTime? FirstDate, DateTime? LastDate) для предотвращения регистра FirstDate, и LastDate не может привести правильное значение к DateTime type

также в вашем файле JS, который вы должны использовать, если не хотите использовать DateTime?

var firstday = new Date(xyz.setDate(first)).toISOString();
var lastday = new Date(xyz.setDate(last)).toISOString();

Со строкой UTC невозможно привести к DateTime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...