diff --git a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Controller.cs b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Controller.cs
index e6d03bf606..92017c07ec 100644
--- a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Controller.cs
+++ b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Controller.cs
@@ -138,7 +138,6 @@ namespace Microsoft.AspNetCore.Mvc
[NonAction]
public virtual ViewResult View(string viewName, object model)
{
- // Do not override ViewData.Model unless passed a non-null value.
if (model != null)
{
ViewData.Model = model;
@@ -195,7 +194,6 @@ namespace Microsoft.AspNetCore.Mvc
[NonAction]
public virtual PartialViewResult PartialView(string viewName, object model)
{
- // Do not override ViewData.Model unless passed a non-null value.
if (model != null)
{
ViewData.Model = model;
diff --git a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/ViewComponent.cs b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/ViewComponent.cs
index b287c4fba3..0084aa222a 100644
--- a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/ViewComponent.cs
+++ b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/ViewComponent.cs
@@ -262,7 +262,12 @@ namespace Microsoft.AspNetCore.Mvc
/// A .
public ViewViewComponentResult View(string viewName, TModel model)
{
- var viewData = new ViewDataDictionary(ViewData, model);
+ if (model != null)
+ {
+ ViewData.Model = model;
+ }
+
+ var viewData = new ViewDataDictionary(ViewData);
return new ViewViewComponentResult
{
ViewEngine = ViewEngine,
diff --git a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/ViewComponentTests.cs b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/ViewComponentTests.cs
index 36caea39e9..92aaafbabb 100644
--- a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/ViewComponentTests.cs
+++ b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/ViewComponentTests.cs
@@ -82,6 +82,25 @@ namespace Microsoft.AspNetCore.Mvc
Assert.Null(actualResult.ViewName);
}
+ [Fact]
+ public void ViewComponent_View_WithEmptyParameter_SetsViewDataModelWithDefaultViewName()
+ {
+ // Arrange
+ var viewComponent = new TestViewComponent();
+ var model = new object();
+ viewComponent.ViewData.Model = model;
+
+ // Act
+ var actualResult = viewComponent.View();
+
+ // Assert
+ Assert.IsType(actualResult);
+ Assert.NotSame(viewComponent.ViewData, actualResult.ViewData);
+ Assert.Equal(new ViewDataDictionary