Пользовательский JavaScriptConverter для DateTime?

У меня есть объект, у него есть свойство DateTime ... Я хочу передать этот объект из обработчика .ashx обратно на веб-страницу через AJAX / JSON ... Я нене хочу использовать сторонние элементы управления ...

когда я делаю это:

  new JavaScriptSerializer().Serialize(DateTime.Now);

Я получаю это:

  "\/Date(1251385232334)\/"

но я хочу "8/26/2009" (не обращайте внимания на локализацию ... мое приложение очень локализовано, поэтому мои предположения о форматировании даты не обсуждаются в этом вопросе). Если я сделаю / зарегистрирую пользовательский конвертер

public class DateTimeConverter : JavaScriptConverter
{
    public override IEnumerable SupportedTypes
    {
        get { return new List() { typeof(DateTime), typeof(DateTime?) }; }
    }

    public override IDictionary Serialize(object obj, JavaScriptSerializer serializer)
    {
        Dictionary result = new Dictionary();
        if (obj == null) return result;
        result["DateTime"] = ((DateTime)obj).ToShortDateString();
        return result;
    }

    public override object Deserialize(IDictionary dictionary, Type type, JavaScriptSerializer serializer)
    {
        if (dictionary.ContainsKey("DateTime"))
            return new DateTime(long.Parse(dictionary["DateTime"].ToString()), DateTimeKind.Unspecified);
        return null;
    }
}

тогда я получаю этот результат (так как возвращаемое значение пользовательского метода serialize является словарем):

{"DateTime":"8/27/2009"}

так что теперь в моем Javascript, вместо того, чтобы делать

somePerson.Birthday

я должен сделать

somePerson.Birthday.DateTime 

  or

somePerson.Birthday["DateTime"]

Как сделать так, чтобы пользовательский конвертер возвращал прямую строку, чтобы у меня был чистый Javascript?

Ответы на вопрос(10)

Ваш ответ на вопрос