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

时间:2015-08-04 11:25:29

标签: jquery ajax model-view-controller asp.net-ajax

我的Ajax帖子调用有问题。我有两个字段,一个用于金额,一个用于日期时间。我希望能够将这两个值作为空值传递,程序不应该崩溃。我的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#代码开始,valdidation在没有崩溃的情况下工作但是我无法在我的C#代码中执行此操作。据我所知,你不能在可以为空的日期时间变量中添加天数。任何建议?:

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

2 个答案:

答案 0 :(得分:0)

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

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

随着一切正常

答案 1 :(得分:0)

并且根据您要设置的初始日期,也可以是从今天开始的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;