Пользовательский 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?