1. Application_Startの最初の行を追加します
GlobalFilters.Filters.Add(new JsonNetActionFilter());
2、JsonNetActionFilter
システムの使用; System.Collections.Generic; を使用します。 System.Linq を使用します。 System.Web を使用します。 System.Web.Mvc を使用します。 名前空間Test.App_Start { パブリック クラス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 voidOnActionExecuting(ActionExecutingContext filterContext) { } } }
3、JsonNetResult
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Test.App_Start { public class JsonNetResult:JsonResult { public JsonNetResult() { Settings = new JsonSerializerSettings { // 循環参照を無視します。Errorに設定すると、循環参照が発生したときにエラーが報告されます(より標準化されたErrorに設定することをお勧めします) ReferenceLoopHandling = ReferenceLoopHandling.Ignore、 DateFormatString = " yyyy-MM-dd HH:mm:ss "、// 日付のフォーマット。デフォルトのフォーマットも適切ではありません ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() // キャメルケースにプロパティの先頭に小文字で名前を付けます }; } public JsonSerializerSettings Settings { get ; private set ;} public override void ExecuteResult(ControllerContext context) { if(context == null ) throw newArgumentNullException(" context " ); if(this .JsonRequestBehavior == JsonRequestBehavior.DenyGet && string .Equals(context.HttpContext.Request.HttpMethod、" GET " 、StringComparison.OrdinalIgnoreCase)) throw new InvalidOperationException(" JSON GET is not allowed " ); HttpResponseBaseレスポンス = 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); } } }