asp.net mvc重写JsonResult返回消息

时间:2022-09-16 18:02:21
using System;
using System.Web;
using System.Web.Mvc;

namespace Transaction.Site.Models
{
    /// <summary>
    /// 自定义消息输出,分流输出中英文消息
    /// </summary>
    public class MyJsonResult : JsonResult
    {
        public string Code { get; set; }
        public string Zh_cnMsg { get; set; }
        public string EnglishMsg { get; set; }
        /// <summary>
        /// 自定义消息输出,分流输出中英文消息
        /// </summary>
        /// <param name="code">标识码</param>
        /// <param name="zh_cnMsg">中文消息</param>
        /// <param name="englishMsg">英文消息</param>
        public MyJsonResult(string code, string zh_cnMsg, string englishMsg)
        {
            Code = code;
            Zh_cnMsg = zh_cnMsg;
            EnglishMsg = englishMsg;
        }
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            var response = context.HttpContext.Response;
            response.ContentType = !string.IsNullOrEmpty(ContentType) ? ContentType : "application/json";
            if (ContentEncoding != null)
            {
                response.ContentEncoding = ContentEncoding;
            }
            Data = new { code = Code, msg = Zh_cnMsg };
            if (!string.IsNullOrWhiteSpace(EnglishMsg))
            {
                HttpCookie cook = context.RequestContext.HttpContext.Request.Cookies.Get("p_lang");
                if (cook != null)
                {
                    string lang = cook.Value;
                    if (lang.ToLower() == "en")
                    {
                        Data = new { code = Code, msg = EnglishMsg };
                    }
                }
            }
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(Data);
            response.Write(json);
        }
    } 
}