zoukankan      html  css  js  c++  java
  • Asp.net mvc 项目返回Json

    因mvc控制器返回类型JsonResult 在处理对象转JSON的时候,对日期的格式化处理并不太符合要求,所以重新继承抽象类ActionResult使用Newtonsoft.Json来系列化

    using System;
    using System.Text;
    using System.Web;
    using System.Web.Mvc;
    using Newtonsoft.Json;
    
    namespace Comon
    {
        public class JsonNetResult : ActionResult
        {
            /// <summary>
            ///     在静态构造函数中设置JsonNet的时间处理方式
            /// </summary>
            static JsonNetResult()
            {
                JsonSerializerSettings settings = new JsonSerializerSettings();
                JsonConvert.DefaultSettings = () =>
                {
                    //日期类型默认格式化处理
                    settings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
                    settings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
    
                    return settings;
                };
            }
    
            /// <summary>初始化 <see cref="T:System.Web.Mvc.JsonResult" /> 类的新实例。</summary>
            public JsonNetResult()
            {
                JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            }
    
            /// <summary>获取或设置内容编码。</summary>
            /// <returns>内容编码。</returns>
            public Encoding ContentEncoding { get; set; }
    
            /// <summary>获取或设置内容的类型。</summary>
            /// <returns>内容的类型。</returns>
            public string ContentType { get; set; }
    
            /// <summary>获取或设置数据。</summary>
            /// <returns>数据。</returns>
            public object Data { get; set; }
    
            /// <summary>获取或设置一个值,该值指示是否允许来自客户端的 HTTP GET 请求。</summary>
            /// <returns>一个值,指示是否允许来自客户端的 HTTP GET 请求。</returns>
            public JsonRequestBehavior JsonRequestBehavior { get; set; }
    
    
            /// <summary>通过从 <see cref="T:System.Web.Mvc.ActionResult" /> 类继承的自定义类型,启用对操作方法结果的处理。</summary>
            /// <param name="context">执行结果时所处的上下文。</param>
            /// <exception cref="T:System.ArgumentNullException">
            ///     <paramref name="context" /> 参数为 null。
            /// </exception>
            public override void ExecuteResult(ControllerContext context)
            {
                if (context == null)
                    throw new ArgumentNullException(nameof(context));
                if (JsonRequestBehavior == JsonRequestBehavior.DenyGet &&
                    string.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
                    throw new InvalidOperationException("不允许使用Get方法访问");
                HttpResponseBase response = context.HttpContext.Response;
                response.ContentType = string.IsNullOrEmpty(ContentType) ? "application/json" : ContentType;
                if (ContentEncoding != null)
                    response.ContentEncoding = ContentEncoding;
                if (Data == null)
                    return;
    
                response.Write(JsonConvert.SerializeObject(Data));
            }
        }
    }

    在静态构造函数里面设置了系列化日期的格式

  • 相关阅读:
    C# 中 KeyPress 、KeyDown 和KeyUp的区别(转载)
    DataBinding的大用
    C#中的非托管资源释放(Finalize&Dispose)(转载)
    如何实现控件从IDE拖放到窗体上的效果?
    怎么在DataGridView中动态添加DateTimePicker列?
    电子表格(SpreadSheet)主要属性、方法和事件 原文:http://blog.csdn.net/zhangting1987/article/details/2065871
    C#利用KeyValuePair实现Dictionary的遍历方法
    Winform 打印报表
    vs2008 此安装不支持该项目类型
    WinForm里面使用多线程修改主线程上的一个Label的值
  • 原文地址:https://www.cnblogs.com/tangchun/p/10482768.html
Copyright © 2011-2022 走看看