Serialize() Jquery 为字段日期类型返回 null

Posted

技术标签:

【中文标题】Serialize() Jquery 为字段日期类型返回 null【英文标题】:Serialize() Jquery returns null for fields date type 【发布时间】:2014-01-08 01:45:25 【问题描述】:

我正在尝试序列化我的表单我的 PartialViewResult (ASPNET MVC 4) 中有值但是将 DATE 类型字段变为空,有人知道为什么吗?谢谢!

$.ajax(
    url: '@Url.Action("CadastroLancamentoParcelar")',
    type: 'GET',
    cache: false,
    context: this,
    data: $("#LancamentoForm").serialize(),
    success: function (result) 
        $(this).html(result);
    ,
    close: function (event, ui) 
        $('#dialog-parcelar').empty();
    
);

我的部分视图结果:

    [Security]
    [HttpGet]
    public PartialViewResult CadastroLancamentoParcelar(LancamentoReceitaDespesa lancamento)
    
        lancamento.decLancamentoParcelaValor = lancamento.decLancamentoReceitaDespesaValor;

        return PartialView("_CadastroLancamentoParcelar", lancamento);
    

HTML MVC:

     @Html.TextBoxFor(model => model.dtLancamentoReceitaDespesaDataVencimento, "0: dd/MM/yyyy", new  @maxlength = "10", @style = "width:107px;", @onkeypress = "mascara(this,mdata);", autocomplete = "off", @id = "txtCalendario" )

HTML:

 <input autocomplete="off" data-val="true" data-val-date="The field Data do Vencimento: must be a date." id="txtCalendario" maxlength="10" name="dtLancamentoReceitaDespesaDataVencimento" onkeypress="mascara(this,mdata);" style="width:107px;" type="text" value="" class="hasDatepicker">

【问题讨论】:

检查生成的 HTML,或者在这里发布 我的猜测是有一些 ASP.net 代码在干扰。日期选择器可能会创建另一个元素来保存该值,直到提交表单。确保正在更新 HTML 输入。 能否发布通过 ajax 请求传递的数据? 看起来他在序列化日期值……对吗?和面膜有关系吗? 19%2F12%2F2013 【参考方案1】:

已经解决了问题...

默认模型绑定器存在一个不易了解的问题,但一旦您知道了,就不会再犯同样的错误:

当您使用 POST 请求时,默认模型绑定器使用您的文化设置来解析日期。

当您使用 GET 请求时,默认模型绑定器使用 CultureInfo.InvariantCulture 来解析日期并忽略您当前的文化设置。

按照链接发现: Passing a DateTime to controller via URL causing error in ASP .NET MVC 3 (culture)

【讨论】:

以上是关于Serialize() Jquery 为字段日期类型返回 null的主要内容,如果未能解决你的问题,请参考以下文章

jquery.serialize() 无法使用 dataTables 插件从第二页开始工作

jQuery form.serialize() 没有给出当前值

jQuery ajax中serialize()方法增加其他参数

jQuery将.serialize()数据转换为JSON数据

jQuery DatePicker:当日期字段为 12-31-9999 时,currentDate 不起作用

jQuery DatePicker:当日期字段为12-31-9999时,currentDate不起作用