.net - 使用 JSON 将日期传递到 .NET

标签 .net jquery asp.net-mvc json

这是我的 jQuery 代码:

function onSaveClicked()
{
    var message = 
    {
        MessageID: $("#MessageID").val() || 0,
        MessageDate: "\/Date(<%= DateTime.Now.Ticks %>)\/",
    };


    $.ajax({
       url: "<%= Url.Action("SaveMessage") %>",
       type: "POST",
       dataType: "json",
       data: $.toJSON(message),
       contentType: "application/json; charset=utf-8",
       success: function(result) {
            if (result && result.success)
            {
                //
            }
       }
   }); 
}

起初,我只是将 MessageDate 设置为日期格式的字符串,但是在出现一些错误之后,我做了一些研究,看起来我需要传递 Ticks。但我收到以下错误:

反序列化 Models.MessageModel 类型的对象时出错。值“634185025866884281”无法解析为“DateTime”类型

我也尝试过:

MessageDate: "\\/Date(<%= DateTime.Now.Ticks %>)\\/",

但我收到此错误消息:

反序列化 Models.MessageModel 类型的对象时出错。 DateTime 内容“/Date(634185027273624742)/”未按照 JSON 的要求以“/Date(”开头并以“)/”结尾。

我需要做什么才能使其正常工作?

编辑: 我用它来反序列化 JSON 请求:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (filterContext.HttpContext.Request.ContentType.Contains("application/json"))
    {
        var serializer = new DataContractJsonSerializer(RootType);
        //RootType here is (Name = "MessageModel", FullName="Models.MessageModel")

        filterContext.ActionParameters["message"] = serializer.ReadObject(filterContext.HttpContext.Request.InputStream);


    }
}

最佳答案

您可以尝试以下功能:

public static string FormatDate(DateTime dt)
{
    var serializer = new DataContractJsonSerializer(typeof(DateTime));
    using (var stream = new MemoryStream())
    {
        serializer.WriteObject(stream, dt);
        return Encoding.Default.GetString(stream.ToArray());
    }
} 

在您看来:

var message = 
{
    MessageID: $("#MessageID").val() || 0,
    MessageDate: "/Date(<%= SomeClass.FormatDate(DateTime.Now) %>)/"
};

关于.net - 使用 JSON 将日期传递到 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585348/

相关文章:

.net - .NET 中的文档管理系统

c# - 如何在c#和vb.net中获取客户端机器的MAC地址

javascript - 重新加载页面部分时的 AJAX 请求

javascript - 从 Razor 输出 JavaScript

.net - 选择哪个数据库以及如何压缩它

jquery - 使用 JQuery 对具有唯一 rel 属性的元素执行功能

jquery - mouseenter 和 mouseout 的结果更稳定?

c# - HTML.EditorFor 小数点后 3 位

c# - 我可以在 Windows 服务中托管(自托管)WCF 服务并通过 http 公开它吗?

c# - Windows 服务中托管的 WCF 服务无法正常运行