Nullable <datetime>在WCF服务中始终为null?</datetime>

时间:2014-01-28 21:28:57

标签: c# javascript wcf

我有一个WCF合约,其中包含3个DateTime?个参数。在我的页面上,我正在使用jquery传递一个包含这3个日期的javascript对象。当javascript为非null时,服务仍将其作为null接收。它们有时需要为Nullable,所以我不能删除它。

C#:

public class Search {
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public DateTime? DateOfBirth { get; set; }
    public int? OrderID { get; set; }
    public DateTime? From { get; set; }
    public DateTime? To { get; set; }
}

JS:

var search = {};
search.FirstName = $('#SearchFirst').val() || null;
search.LastName = $('#SearchLast').val() || null;
search.DateOfBirth = $('#SearchDOB').val() || null;
search.From = after;
search.To = before;
search.OrderID = null;

$.ajax({
    url: url,
    dataType: "json",
    data: search,
    async: true,
    cache: false,
    success: function (data) {
        $('#SearchLoading').hide();
        DisplaySearchResults(data);
    },
    type: "Post"
});

我正在为new Date('10/14/2013')before使用new Date('10/15/2013')after等测试值。

Fiddler报道POST主体看起来像这样:

  

姓=安培;名字=安培; DATEOFBIRTH =安培;从=周一+月+ 14 + 00%3A00%3A00 + MDT + 2013&安培;为了=星期二+月+ 15 + 00%3A00%3A00 + MDT + 2013

FirstNameLastName等其他字段正确显示。目前,OrderID将始终为null,但日期全部为null,没有警告或错误。我该怎么办?

1 个答案:

答案 0 :(得分:0)

看起来像格式问题..你可以在将它发送到服务器之前使用Date.prototype.toISOString()功能吗?

这是一个documentation,如果你想让它在&gt; IE9浏览器上运行,你可以extend it为例。

您还可以配置message logging以查看有关请求的更多详细信息

<messageLogging 
       logEntireMessage="true" 
       logMalformedMessages="true" 
       logMessagesAtServiceLevel="true" 
       logMessagesAtTransportLevel="true" /> 

-D