ASP.net MVC - модель с DateTime, пытающаяся сериализовать для Json () для jqGrid - PullRequest
3 голосов
/ 22 сентября 2010

У меня есть модель ...

    [DataContract]
    public class DeviceModel
    {
        [DataMember(Order=1)]
        public string Alias { get; set; }

        [DataMember(Order = 2)]
        public string Location { get; set; }

        [DataMember(Order = 3)]
        public string State { get; set; }

        [DataMember(Order = 4)]
        public DateTime? DateCreated { get; set; }

        [DataMember(Order = 5)]
        public string RatePlan { get; set; }

        public DeviceModel()
        {
            Alias = null;
            Location = null;
            State = null;
            DateCreated = null;
            RatePlan = null;
        }
    }

Эта модель, как вы можете видеть, содержит объект DateTime. Я использую эту модель в качестве данных для плагина jqGrid, который мы используем. Единственная проблема заключается в том, что поле DateCreated показывает «/ Date (1285128000000) /» при загрузке таблицы вместо читаемой даты. Я читал некоторые другие посты здесь, но я не чувствую, что они вполне соответствуют тому, что я ищу. Я ищу способ отформатировать это поле DateTime в удобочитаемую строку? Предложения?

Ответы [ 2 ]

4 голосов
/ 22 сентября 2010

JSON знает только два примитивных типа данных: строки и числа и тип Date отсутствует.Data Contract Serializer поддерживает больше типов .Например, DateTime, DateTimeOffset, TimeSpan, Guid, Uri, XmlQualifiedName.Если вы отправляете данные клиенту, который также использует сериализатор контрактов данных для десериализации данных, вы можете использовать любые типы данных без проблем.

Самое простое решение вашей проблемы - подготовка данных на сервере перед отправкой.данные.Если вы будете сериализовать только объекты, которые имеют только строки и числа в качестве свойств или массивов / IList<T>, то у вас не возникнет проблем.Например, по умолчанию jqGrid ожидает данные в формате ISO Date : Y-m-d с номерами для Y, m и d.Если вы преобразуете свои данные на сервере в формат Ymd и используете formatter:'date' в соответствующем определении colModel, ваша проблема будет решена.

Вы также можете решить проблему на стороне клиента, используя пользовательский форматер и пользовательский форматер .

0 голосов
/ 22 сентября 2010

Попробуйте Newtonsoft Json.NET , как описано в этом сообщении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...