在asp.net中的DateTime JavaScript序列化没有给出一个JavaScript日期对象?

当我在.Net中解析DateTime到json时,它返回一个字符串(即"/Date(1249335194272)/" )。 如何让它返回一个js Date对象的构造函数而不是包装在一个字符串中?

// js server code
var dteNow = <%= jsonDateNow %>;


// js rendered code
var dteNow = "/Date(1249335477787)/";


// C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.Script.Serialization;
using System.Web.UI.WebControls;

namespace testing{
    public partial class iTaxPrep : System.Web.UI.Page
    {
        protected string jsonDateNow;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                jsonDateNow = new JavaScriptSerializer().Serialize(DateTime.Now);

            }
        }
    }
}

这是JSON的一个已知限制。 这个答案可能会对你有所帮助,

value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));

这似乎工作(感谢克里斯S的想法)。 在C#中做一个替换来从日期对象周围移除字符串包装器;

    using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.UI;
        using System.Web.Script.Serialization;
        using System.Web.Script.Services;
        using System.Web.Services;
        using System.Web.UI.WebControls;

        namespace test
        {
            [ScriptService]
            public partial class testing: System.Web.UI.Page
            {
                protected string strCaseID;
                protected string jsonCase;

                protected void Page_Load(object sender, EventArgs e)
                {
                    if (!IsPostBack)
                    {
                        strCaseID =Tools.GetQueryObject("id");
                        // get a complex object with dates, string, arrays etc.
                        jsonESHACase = new JavaScriptSerializer().Serialize(objCase.Get(strCaseID ))
                            .Replace(""/Date(", "new Date(").Replace(")/"", ")");
                    }
                }
            }
        }

..删除引号后添加新的前缀到Date这个js现在可以工作。 万岁!

testCase= <%= jsonESHACase %>;
    if (testCase) {
        document.write(testCase["ClosingDate"].format("MM dd yyyy"));
    }

简单的JavaScript操作是这样的:

function(param){
  var date = new Date(parseInt(param.substr(6)));
  return date;
}

将JSON日期作为参数传递给函数,它将返回一个javascript日期。

链接地址: http://www.djcxy.com/p/8125.html

上一篇: Javascript serialization of DateTime in asp.net is not giving a javascript date object?

下一篇: Performance of ASP.NET MVC routing