c# - Nullable<DateTime> 在 WCF 服务中始终为 null?

标签 c# javascript wcf

我有一个 WCF 契约(Contract),其中有 3 个 DateTime? 参数。在我的页面上,我使用 jquery 传递一个包含这 3 个日期的 javascript 对象。当 javascript 不为空时,服务仍将其接收为空。有时它们确实需要为 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') for beforenew Date('10/15/2013') 之后

Fiddler 报告 POST 正文如下所示:

FirstName=&LastName=&DateOfBirth=&From=Mon+Oct+14+00%3A00%3A00+MDT+2013&To=Tue+Oct+15+00%3A00%3A00+MDT+2013

FirstNameLastName 等其他字段正常显示。现在,OrderID 将始终为 null,但日期都为 null,没有警告或错误。我能做什么?

最佳答案

看起来像是格式问题。您可以在将它发送到服务器之前使用 Date.prototype.toISOString() 函数吗?

这是一个 documentation如果你想让它在 >IE9 浏览器上工作,你可以 extend it按照示例。

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

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

-D

关于c# - Nullable<DateTime> 在 WCF 服务中始终为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21417264/

相关文章:

javascript - 测试 React 组件时如何包含 javascript 文件?

.net - 简单来说,WCF是什么?

使用 QTP 进行 WCF Web 服务测试

c# - Metro App,查询Windows Store中的当前应用

c# - WCF 向客户端发送事件

c# - 如何从用户控件而不是本地访问主窗口中声明的数据上下文

c# - WCF 服务代理生成在通过 F5 负载平衡器公开时引发错误

c# - Windows 应用程序图标的确切尺寸是多少

javascript - Ajax 只适用于部分用户?

javascript XMLSerializer 属性中的特殊字符