我无法找到一种方法让我的SignalR中心接受DateTime值为'dd / MM / yyyy'。它正在恢复为'MM / dd / yyyy'。
浏览器中的SignalR似乎正在向服务器发送正确的值,但服务器必须以错误的方式对其进行反序列化。这也意味着诸如'20 / 01/2017'之类的值会导致错误而根本不起作用。
我在这里错过了一些简单的东西吗?任何帮助将不胜感激。
服务器端代码
public class Person
{
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
}
public class PersonHub : Hub
{
public void SendToServer(Person person)
{
Debug.WriteLine($"Server DOB: {person.DateOfBirth.ToString("dd MMM yyyy")}");
}
}
客户端代码
Name: <input id="name" />
DOB: <input id="dob" />
<button class="btn btn-success" onclick="save()">Save</button>
<script>
var hub = $.connection.personHub;
$.connection.hub.start();
function save() {
var person = {
Name: $('#name').val(),
DateOfBirth: $('#dob').val()
}
hub.server.sendToServer(person);
}
</script>
实施例
05/01/2017 - 服务器DOB:2017年5月1日
2016年8月4日 - 服务器DOB:2016年4月8日
01/12/2015 - 服务器DOB:2015年1月21日
20/01/2017 - 抛出错误异常:Newtonsoft.Json.dll中的'Newtonsoft.Json.JsonReaderException'{“I”:“5”,“E”:“调用Hub方法'personhub.SendToServer'时出错。 “}