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));
        }
    }
}

在靜態構造函數里面設置了系列化日期的格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM