你如何与SignalR有不同的文化DateTimes,例如'en-AU'(年/月/日)

时间:2017-01-11 21:28:52

标签: c# asp.net datetime json.net signalr

我无法找到一种方法让我的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'时出错。 “}

0 个答案:

没有答案