在服务器asp.net mvc 3上反序列化javascript日期
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在服务器asp.net mvc 3上反序列化javascript日期,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2309字,纯文字阅读大概需要4分钟。
内容图文
![在服务器asp.net mvc 3上反序列化javascript日期](/upload/InfoBanner/zyjiaocheng/798/8fe1d456d71b4b3280b2708d649a5db9.jpg)
我一直在努力解决这个问题.我正在尝试向客户端发送一个对象.一旦客户端更新了对象,我想将其发布回服务器并将其保存在我的数据库中.第一部分工作正常.但是,当我发回它时,所有日期都搞砸了并开始了0001年.我认为这是因为它无法反序列化日期.我可以发布一个带有日期属性的json对象,并使用asp.net mvc 3将其反序列化为服务器上的类型吗?
小组是
public class Group
{
public Group();
public string CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public string Description { get; set; }
public string Name{ get; set; }
public string Status { get; set; }
public string UpdatedBy { get; set; }
public DateTime UpdatedOn { get; set; }
}
而
public JsonResult updateGroup(Group group)
{
var result = Repository.updateGroup(group);
return Json(result, JsonRequestBehavior.AllowGet);
}
我得到了客户
$.ajax({
url: '../updateGroup',
type: 'POST',
data: JSON.stringify(group),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function(){ success(); }
});
解决方法:
ASP.NET MVC 3使用JavaScriptSerializer反向反序列化值.引用本课程的文档:
Date object, represented in JSON as
“\/Date(number of ticks)\/”. The
number of ticks is a positive or
negative long value that indicates the
number of ticks (milliseconds) that
have elapsed since midnight 01
January, 1970 UTC.The maximum supported date value is
MaxValue (12/31/9999 11:59:59 PM) and
the minimum supported date value is
MinValue (1/1/0001 12:00:00 AM).
这基本上意味着您的请求对象必须看起来像这样:
{ CreatedOn: '\/Date(1299098853123)\/', CreatedBy: 'foo', ... }
所以这是你如何进行的:
// taking the local time but this could be any javascript Date object
var now = new Date();
var group = {
CreatedBy: 'foo',
CreatedOn: '\/Date(' + now.getTime() + ')\/',
Description: 'some description',
Name: 'some name',
etc...
};
当然,因为我们现在正在使用UTC,如果您需要使用本地时间(首选UTC),请不要忘记补偿服务器上的本地时间:
public ActionResult UpdateGroup(Group group)
{
DateTime serverCreatedOn = group.CreatedOn.ToLocalTime();
...
}
也不要像这样硬编码网址:
url: '../updateGroup'
在处理网址时始终使用网址助手,或者在发货时可能会出现意外情况:
url: '@Url.Action("updateGroup")'
更新:
尝试编码这样的日期:
// taking the local time but this could be any javascript Date object
var now = new Date();
var group = {
CreatedBy: 'foo',
CreatedOn: now.toUTCString(),
Description: 'some description',
Name: 'some name',
etc...
};
内容总结
以上是互联网集市为您收集整理的在服务器asp.net mvc 3上反序列化javascript日期全部内容,希望文章能够帮你解决在服务器asp.net mvc 3上反序列化javascript日期所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。