MVC AOP解决JsonResult返回json时间格式

网友投稿 281 2022-09-05

MVC AOP解决JsonResult返回json时间格式

新建JsonNetResult类:JsonResult

public class JsonNetResult: JsonResult { public JsonNetResult() { Settings = new JsonSerializerSettings { ReferenceLoopHandling=ReferenceLoopHandling.Ignore, DateFormatString= "yyyy-MM-dd HH:mm:ss", ContractResolver=new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()//json中属性开头字母小写的驼峰命名 }; } public JsonSerializerSettings Settings { get; private set; } public override void ExecuteResult(ControllerContext context) { if (context == null) throw new ArgumentNullException("context"); //不允许GET请求 if (this.JsonRequestBehavior == JsonRequestBehavior.DenyGet && string.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)) throw new InvalidOperationException("JSON GET is not allowed"); HttpResponseBase response = context.HttpContext.Response; response.ContentType = string.IsNullOrEmpty(this.ContentType) ? "application/json" : this.ContentType; if (this.ContentEncoding != null) response.ContentEncoding = this.ContentEncoding; if (this.Data == null) return; var scriptSerializer = JsonSerializer.Create(this.Settings); scriptSerializer.Serialize(response.Output, this.Data); } }

新建JsonNetActionFilter过滤器:

public class JsonNetActionFilter: IActionFilter { public void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.Result is JsonResult && !(filterContext.Result is JsonNetResult)) { JsonResult jsonResult = (JsonResult)filterContext.Result; JsonNetResult jsonNetResult = new JsonNetResult(); jsonNetResult.ContentEncoding = jsonResult.ContentEncoding; jsonNetResult.ContentType = jsonResult.ContentType; jsonNetResult.Data = jsonResult.Data; jsonNetResult.JsonRequestBehavior = jsonResult.JsonRequestBehavior; jsonNetResult.MaxJsonLength = jsonResult.MaxJsonLength; jsonNetResult.RecursionLimit = jsonResult.RecursionLimit; filterContext.Result = jsonNetResult; } } public void OnActionExecuting(ActionExecutingContext filterContext) { } }

在Global中添加

GlobalFilters.Filters.Add(new JsonNetActionFilter());

控制器:

[HttpGet] public ActionResult TestJson() { return View(); } [HttpPost] public ActionResult TestJson(FormCollection fc) { Dog dog = new Dog() { BirthDay = DateTime.Now, Id = 5, Name = "旺财" }; return Json(dog); //return new JsonNetResult() { Data = dog }; }

前端:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DDD领域模型数据访问权限(九)
下一篇:传统广告营销过时了?中国电动汽车制造商拉拢网红打宣传战!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~