将带有JSON的日期传递到.NET
以下是我的jQuery代码:将带有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") %&
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; });