From 87b4ba95838a1ae1eb2ab59efa1458004c19328c Mon Sep 17 00:00:00 2001 From: volkanceylan Date: Wed, 18 Dec 2024 18:36:46 +0300 Subject: [PATCH] Try to avoid issue when StringField reads value via Newtonsoft.Json and a DateTime token is received --- .../Entity/FieldTypes/StringField.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Serenity.Net.Services/Entity/FieldTypes/StringField.cs b/src/Serenity.Net.Services/Entity/FieldTypes/StringField.cs index 55646466f9..da441598b8 100644 --- a/src/Serenity.Net.Services/Entity/FieldTypes/StringField.cs +++ b/src/Serenity.Net.Services/Entity/FieldTypes/StringField.cs @@ -119,6 +119,19 @@ public override void ValueFromJson(Newtonsoft.Json.JsonReader reader, IRow row, case Newtonsoft.Json.JsonToken.Boolean: _setValue(row, Convert.ToString(reader.Value, CultureInfo.InvariantCulture)); break; + case Newtonsoft.Json.JsonToken.Date: + var val = reader.Value is DateTimeOffset dto ? dto.DateTime : (DateTime)reader.Value!; + + var style = serializer.DateFormatString ?? "o"; + + if (val.TimeOfDay == TimeSpan.Zero) + style = style.Contains('T') ? style.Split('T')[0] : "yyyy-MM-dd"; + + if (style.Contains('\'')) + style = style.Replace("'", ""); + + _setValue(row, val.ToString(style, CultureInfo.InvariantCulture)); + default: throw JsonUnexpectedToken(reader); }