diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs b/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs
index 7257402dcc..d34770ca35 100644
--- a/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs
+++ b/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs
@@ -203,6 +203,32 @@ public ClaimsPrincipal User
}
}
+ ///
+ /// Creates a object by specifying a .
+ ///
+ /// The status code to set on the response.
+ /// The created object for the response.
+ [NonAction]
+ public virtual StatusCodeResult StatusCode(int statusCode)
+ {
+ return new StatusCodeResult(statusCode);
+ }
+
+ ///
+ /// Creates a object by specifying a and
+ ///
+ /// The status code to set on the response.
+ /// The value to set on the .
+ /// The created object for the response.
+ [NonAction]
+ public virtual ObjectResult StatusCode(int statusCode, object value)
+ {
+ var result = new ObjectResult(value);
+ result.StatusCode = statusCode;
+
+ return result;
+ }
+
///
/// Creates a object by specifying a string.
///
@@ -266,7 +292,6 @@ public virtual ContentResult Content(string content, MediaTypeHeaderValue conten
return result;
}
-
///
/// Creates a object that produces an empty No Content (204) response.
///
diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs
index 37235898da..75437ad81d 100644
--- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs
+++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs
@@ -1061,6 +1061,54 @@ public void Controller_Content_CharsetInContentType_IsUsedForEncoding()
Assert.Equal(contentType, contentResult.ContentType);
}
+ [Fact]
+ public void Controller_StatusCode_SetObject()
+ {
+ // Arrange
+ var statusCode = 204;
+ var value = new { Value = 42 };
+
+ var statusCodeController = new StatusCodeController();
+
+ // Act
+ var result = (ObjectResult)statusCodeController.StatusCode_Object(statusCode, value);
+
+ // Assert
+ Assert.Equal(statusCode, result.StatusCode);
+ Assert.Equal(value, result.Value);
+ }
+
+ [Fact]
+ public void Controller_StatusCode_SetObjectNull()
+ {
+ // Arrange
+ var statusCode = 204;
+ object value = null;
+
+ var statusCodeController = new StatusCodeController();
+
+ // Act
+ var result = statusCodeController.StatusCode_Object(statusCode, value);
+
+ // Assert
+ Assert.Equal(statusCode, result.StatusCode);
+ Assert.Equal(value, result.Value);
+ }
+
+ [Fact]
+ public void Controller_StatusCode_SetsStatusCode()
+ {
+ // Arrange
+ var statusCode = 205;
+ var statusCodeController = new StatusCodeController();
+
+ // Act
+ var result = statusCodeController.StatusCode_Int(statusCode);
+
+ // Assert
+ Assert.Equal(statusCode, result.StatusCode);
+ }
+
public static IEnumerable