我有一个 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 before
和 new 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
FirstName
和 LastName
等其他字段正常显示。现在,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/