【问题标题】:ASP MVC 4 JsonResult how to use ISO 8601 dates?ASP MVC 4 JsonResult 如何使用 ISO 8601 日期?
【发布时间】:2012-09-20 06:00:02
【问题描述】:

我刚刚安装了 ASP MVC 4,我的 JSON 日期仍然以旧格式 {"timestamp":"\/Date(1348070400000)\/"} 恢复。

我是under the impression,他们应该以2012-02-18T00:54:06.8447642Z 的格式返回,而无需我做任何事情。

注意:JSON.NET 现在是 ASP.NET Web API 的一个组成部分,因此您可以 开箱即用。

我的控制器看起来像这样

public JsonResult Test()
{
    return Json(new {timestamp = DateTime.Now()}, JsonRequestBehavior.AllowGet);
}

我怎样才能让它工作?我需要更改我的 Global.asax.cs 或 Web.config 吗?

【问题讨论】:

    标签: asp.net-mvc-4


    【解决方案1】:

    我的印象是他们应该在 格式 2012-02-18T00:54:06.8447642Z 无需我做任何事情。

    这仅适用于 ASP.NET Web API (ApiControllers)。但是返回 JsonResults 的标准 ASP.NET MVC 控制器操作仍然使用JavaScriptSerializer。因此,如果您想使用 ISO 8601 日期,您可以通过编写 custom action result 将这个序列化程序与 JSON.NET 交换。只需将适当的转换器添加到序列化程序使用的设置中即可:

    SerializerSettings.Converters.Add(new IsoDateTimeConverter());
    

    您可能会问为什么他们没有为标准控制器实现 JSON.NET。我想这是出于兼容性原因,因为这将是一个重要的突破性变化。但我可能会将 JSON.NET 设为默认序列化程序,并为那些升级现有应用程序的用户提供备用选项。

    【讨论】:

    • 嗨,我有一个 ActionResult 返回一个带有模型的 PartialView,我希望使用 JsonNetResult 类对模型进行序列化......有什么线索吗?非常感谢
    • 如果你想返回 JSON,那么你应该返回一个使用 JSON.NET 作为序列化器的自定义 ActionResult,而不是返回一个 PartialView,例如 JsonNetResult。
    猜你喜欢
    • 2022-10-20
    • 1970-01-01
    • 2013-05-14
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多