diff --git a/src/Serenity.Net.Data/Criteria/CriteriaJsonConverter.cs b/src/Serenity.Net.Data/Criteria/CriteriaJsonConverter.cs index 33fbf057b3..cec82c275b 100644 --- a/src/Serenity.Net.Data/Criteria/CriteriaJsonConverter.cs +++ b/src/Serenity.Net.Data/Criteria/CriteriaJsonConverter.cs @@ -126,7 +126,7 @@ private BaseCriteria Parse(JsonElement[] array) throw new ArgumentNullException("item"); if (item.ValueKind == JsonValueKind.String) - list.Add(item.GetString()); + list.Add(item.GetString()); else if (item.ValueKind == JsonValueKind.Number) list.Add(item.GetDouble()); else if (item.ValueKind == JsonValueKind.True) diff --git a/src/Serenity.Net.Entity/FieldTypes/DateTimeOffsetField.cs b/src/Serenity.Net.Entity/FieldTypes/DateTimeOffsetField.cs index 82ef74300c..86bf174181 100644 --- a/src/Serenity.Net.Entity/FieldTypes/DateTimeOffsetField.cs +++ b/src/Serenity.Net.Entity/FieldTypes/DateTimeOffsetField.cs @@ -36,6 +36,41 @@ public static DateTimeOffsetField Factory(ICollection collection, string return new DateTimeOffsetField(collection, name, caption, size, flags, getValue, setValue); } + /// + /// Converts the value. + /// + /// The source. + /// The provider. + /// + public override object ConvertValue(object source, IFormatProvider provider) + { + if (source is Newtonsoft.Json.Linq.JValue jValue) + source = jValue.Value; + + if (source == null) + return null; + + if (source is DateTime dt) + return dt; + + if (source is DateTimeOffset dto) + return dto.DateTime; + + if (source is string s) + { + if (DateTimeOffset.TryParse(s, provider, DateTimeStyles.None, out var dtOffset)) + return dtOffset; + + if (s.TryParseISO8601DateTime(out var dateTime)) + return dateTime; + + if (DateTime.TryParse(s, provider, DateTimeStyles.None, out dateTime)) + return dateTime; + } + + return Convert.ChangeType(source, typeof(DateTime), provider); + } + /// /// Gets field value from a data reader. /// diff --git a/src/Serenity.Net.Entity/FieldTypes/GenericValueField.cs b/src/Serenity.Net.Entity/FieldTypes/GenericValueField.cs index e089879d85..7a4500ca0b 100644 --- a/src/Serenity.Net.Entity/FieldTypes/GenericValueField.cs +++ b/src/Serenity.Net.Entity/FieldTypes/GenericValueField.cs @@ -42,13 +42,11 @@ public override object ConvertValue(object source, IFormatProvider provider) if (source == null) return null; - else - { - if (source is TValue val) - return val; - return Convert.ChangeType(source, typeof(TValue), provider); - } + if (source is TValue val) + return val; + + return Convert.ChangeType(source, typeof(TValue), provider); } ///