diff --git a/samples/MvcSample/Home2Controller.cs b/samples/MvcSample/Home2Controller.cs index 489f4a5aaf..cd2abb49ad 100644 --- a/samples/MvcSample/Home2Controller.cs +++ b/samples/MvcSample/Home2Controller.cs @@ -42,15 +42,7 @@ namespace MvcSample public IActionResult UserJson() { - return new JsonResult(_user) - { - Encoding = Encoding.UTF8 - }; - } - - public IActionResult HelperUserJson() - { - JsonResult jsonResult = (JsonResult)Result.Json(_user); + var jsonResult = Result.Json(_user); jsonResult.Indent = false; return jsonResult; diff --git a/src/Microsoft.AspNet.Mvc/ActionResultFactory.cs b/src/Microsoft.AspNet.Mvc/ActionResultFactory.cs index b54482d6e9..2f42af5bd9 100644 --- a/src/Microsoft.AspNet.Mvc/ActionResultFactory.cs +++ b/src/Microsoft.AspNet.Mvc/ActionResultFactory.cs @@ -4,6 +4,13 @@ namespace Microsoft.AspNet.Mvc { public class ActionResultFactory : IActionResultFactory { + private readonly IActionResultHelper _result; + + public ActionResultFactory(IActionResultHelper result) + { + _result = result; + } + public IActionResult CreateActionResult(Type declaredReturnType, object actionReturnValue, RequestContext requestContext) { // optimize common path @@ -45,7 +52,7 @@ namespace Microsoft.AspNet.Mvc }; } - return new JsonResult(actionReturnValue); + return _result.Json(actionReturnValue); } } } diff --git a/src/Microsoft.AspNet.Mvc/ActionResultHelper.cs b/src/Microsoft.AspNet.Mvc/ActionResultHelper.cs index 6d395ec330..d23c6b99df 100644 --- a/src/Microsoft.AspNet.Mvc/ActionResultHelper.cs +++ b/src/Microsoft.AspNet.Mvc/ActionResultHelper.cs @@ -30,7 +30,7 @@ namespace Microsoft.AspNet.Mvc }; } - public IActionResult Json(object value) + public IJsonResult Json(object value) { return new JsonResult(value); } diff --git a/src/Microsoft.AspNet.Mvc/ActionResults/IJsonResult.cs b/src/Microsoft.AspNet.Mvc/ActionResults/IJsonResult.cs new file mode 100644 index 0000000000..a76a05a13d --- /dev/null +++ b/src/Microsoft.AspNet.Mvc/ActionResults/IJsonResult.cs @@ -0,0 +1,10 @@ +using System.Text; + +namespace Microsoft.AspNet.Mvc +{ + public interface IJsonResult : IActionResult + { + Encoding Encoding { get; set; } + bool Indent { get; set; } + } +} diff --git a/src/Microsoft.AspNet.Mvc/ActionResults/JsonResult.cs b/src/Microsoft.AspNet.Mvc/ActionResults/JsonResult.cs index 7b64b5da80..414ebeb408 100644 --- a/src/Microsoft.AspNet.Mvc/ActionResults/JsonResult.cs +++ b/src/Microsoft.AspNet.Mvc/ActionResults/JsonResult.cs @@ -7,7 +7,7 @@ using Newtonsoft.Json; namespace Microsoft.AspNet.Mvc { - public class JsonResult : IActionResult + public class JsonResult : IJsonResult { private readonly object _returnValue; diff --git a/src/Microsoft.AspNet.Mvc/IActionResultHelper.cs b/src/Microsoft.AspNet.Mvc/IActionResultHelper.cs index 19c64cb90e..29d3835328 100644 --- a/src/Microsoft.AspNet.Mvc/IActionResultHelper.cs +++ b/src/Microsoft.AspNet.Mvc/IActionResultHelper.cs @@ -5,7 +5,7 @@ namespace Microsoft.AspNet.Mvc { IActionResult Content(string value); IActionResult Content(string value, string contentType); - IActionResult Json(object value); + IJsonResult Json(object value); IActionResult View(string view, ViewData viewData); } }