如何在 ajax jquery 调用中传递 NULL 值?

How to pass NULL value in ajax jquery call?

我的 Ajax post 通话有问题。我有两个字段,一个用于金额,一个用于日期时间。我希望能够将这两个值都作为空值传递,并且程序不应该崩溃。我的 C# 方法头看起来像这样

public ActionResult Update(int invoiceNumber, DateTime start,decimal payAmount = 0)

我的 Jquery 代码如下所示

$(document.body).on("click", ".changeInvoice", function (e) {
        e.preventDefault();
        var invoiceNr = $("#invoiceNumber").val();
        var start = $("#date").val();
        var payAmount = $("#payAmount").val();
        console.log(invoiceNr);

        var updateInvoice =
        {
            invoiceNumber: invoiceNr,
            start: start,
            payAmount: payAmount
        }
        $.ajax({
            type: "POST",
            url: "URL",
            data: updateInvoice,
            success: function (response) {
                location.reload();

            }
        });

如果我 运行 如果用户不填写开始日期时间值,程序现在会崩溃。但是如果我设置一个日期时间呢?从我的 C# 代码开始,验证工作没有崩溃,但后来我无法在我的 C# 代码中执行此操作。据我了解,您不能将天数添加到可为 null 的日期时间变量。有什么建议吗?:

i.FirstReminderDate = start.Date.AddDays(10);

我需要在将可为空的日期时间设置为参数后转换日期时间值,因此:

   public ActionResult Update(int invoiceNumber, DateTime? start,decimal payAmount = 0)
{
    i.FirstReminderDate = Convert.ToDateTime(start).Date.AddDays(10);
}

然后一切正常

并且取决于您想要设置初始日期的时间,也可以是从今天开始的 10 天,因为默认日期是:1/11/0001 12:00:00 AM,添加 10 天没有意义到这个日期,但是如果你想设置像今天这样的初始日期可以是

DateTime firstReminderDateFromToday = DateTime.Now.Date.AddDays(10);

if (start != null)
    i.firstReminderDate = Convert.ToDateTime(start).Date.AddDays(10);
else
    i.firstReminderDate = firstReminderDateFromToday;