A direct use ContentResult
return new ContentResult { ContentType = "application/json", Content = JsonConvert.SerializeObject(obj, new JsonSerializerSettings { ContractResolver = new DefaultContractResolver() }) };
Second use MVC ResultFilter
public class JsonSerializeFilter : IResultFilter { public void OnResultExecuted(ResultExecutedContext context) { } public void OnResultExecuting(ResultExecutingContext context) { var result = context.Result as ObjectResult; context.Result = new ObjectResult(JsonConvert.SerializeObject( result?.Value, new JsonSerializerSettings { ContractResolver = new DefaultContractResolver() } )); } }
//use
[TypeFilter(typeof(JsonSerializeFilter))]
public async Task<DataTable> Linkdata(string t, string f, string q = "")
{//todo
}