0

メールテンプレートを表示するJSONグリッドがありますが、問題は、表示される最終変更日が現在の日付よりも前であるにもかかわらず、MVC編集ビューでそのレコードを編集するときに同じレコードの最終変更日が正しく表示されることです。

返されるJson形式の日付は次のとおりです:Date(1362686659073)

ただし、同じレコードの編集ページの日付は次のとおりです。2013年3月7日12:04:19 PMすなわち日付(1362638059000)

同じ日付で約13.5時間の違いがあります。

これはデータをJSONに返す私のコードです

        TemplateGridExt ext = new TemplateGridExt();
        ext.Count = client.GetPagedGridCountEmailTmpl(filter);
        ext.Data = result.EmailTmpl_Vs.ToList();
        return this.Json(ext, JsonRequestBehavior.AllowGet);
4

1 に答える 1

1

文字列などの他の形式でデータを渡してみてください。そうすれば、正常に機能するはずです。

このコードを試してください-

まず、次のようなクラスを作成します-

public class TimeFormatter : DateTimeConverterBase
{
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return DateTime.Parse(reader.Value.ToString());
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {

        writer.WriteValue(((DateTime)value).ToString("yyyy/MM/dd"));//format for date
    }
}

このコードを使用して、Jsonデータをビューに返します-

JsonSerializerSettings jSettings = new JsonSerializerSettings()
            {
                Formatting = Formatting.Indented,
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            };

            jSettings.Converters.Add(new TimeFormatter());
            JsonSerializer.Create(jSettings);


            return JsonConvert.SerializeObject(data, jSettings);//'data' is list of objects to return to view.

そこに名前空間を含めることを忘れないでください-

using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
于 2013-03-19T07:14:49.137 に答える