Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将带有JSON的日期传递到.NET_.net_Jquery_Asp.net Mvc_Json - Fatal编程技术网

将带有JSON的日期传递到.NET

将带有JSON的日期传递到.NET,.net,jquery,asp.net-mvc,json,.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") %&

以下是我的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)
            {
                //
            }
       }
   }); 
}

我也有同样的问题。我所做的是使用下面的函数将其转换为一个数字

private double GetUnixEpoch(DateTime dateTime)
    {
        var unixTime = dateTime.ToUniversalTime() -
            new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

        return unixTime.TotalMilliseconds;
    }

然后可以在Javascript日期对象的构造函数中使用该数字来创建日期对象

您可以尝试以下功能:

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) %>)/"
};
var消息=
{
MessageID:$(“#MessageID”).val()| 0,
MessageDate:“/Date()/”
};
提供了此解决方案(已修改),您可以使用JSON.stringify()将其放在客户端上:


这在最新的IE、Chrome和Firefox中适用于我。

你的
SaveMessage
操作用于反序列化JSON请求吗?我编辑了我的原始,现在显示在上面。你能给我一个例子说明我在Javascript中如何使用它吗?这给了我以下错误:反序列化Models.MessageModel类型的对象时出错。无法将值“/Date(1282924488721)”解析为“Int64”类型。您可以发布在ActionFilter中传递的JSON字符串吗?在您的示例中,
filterContext.HttpContext.Request.InputStream
。我将流读取到字节数组中,然后将字节数组转换为字符串。结果如下:"1233477101115115971031017368345848443484105116108101345834116101115116503444346810111599114105112116105111110345834116101115116105110103344434689711610183116971141163458344768971161014047689711610140495056505750565150515654504548524848414741473444346897116101691101003458344768971161014047689711610140495056505750565150515654514548524848414741473444348610511510598108101345810297108115101125"
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) %>)/"
};
jsonData = JSON.stringify([new Date()], 
    function (k, v) { return this[k] instanceof Date ? '/Date(' + v + ')/' : v; });