У меня есть объект, у него есть свойство DateTime... Я хочу передать этот объект из обработчика .ashx обратно на веб-страницу через AJAX/JSON... Я не хочу использовать сторонние элементы управления..
когда я это делаю:
new JavaScriptSerializer().Serialize(DateTime.Now);
Я получаю это:
"\/Date(1251385232334)\/"
но я хочу "8/26/2009" (некорректная локализация... мое приложение очень локализовано, поэтому мои предположения о форматировании даты не обсуждаются в этом вопросе). Если я создаю/зарегистрирую пользовательский конвертер
public class DateTimeConverter : JavaScriptConverter
{
public override IEnumerable<Type> SupportedTypes
{
get { return new List<Type>() { typeof(DateTime), typeof(DateTime?) }; }
}
public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
Dictionary<string, object> result = new Dictionary<string, object>();
if (obj == null) return result;
result["DateTime"] = ((DateTime)obj).ToShortDateString();
return result;
}
public override object Deserialize(IDictionary<string, object> 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?