From 2bd9de67f14d80b0ca89880fac5871051ad27f6c Mon Sep 17 00:00:00 2001
From: Pranav K <prkrishn@hotmail.com>
Date: Mon, 10 Jan 2022 13:40:51 -0800
Subject: [PATCH] Avoid declaring RazorPage<T>.Model as nullable by default
 (#39332) (#39416)

Contributes to https://github.com/dotnet/aspnetcore/issues/37510
---
 src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt        |  2 ++
 src/Mvc/Mvc.Razor/src/RazorPageOfT.cs                |  3 +--
 src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt |  2 ++
 .../Mvc.ViewFeatures/src/ViewDataDictionaryOfT.cs    | 12 +++---------
 .../StarterWeb-CSharp/Views/Shared/Error.cshtml      |  4 ++--
 5 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt b/src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt
index 7dc5c58110b..5b615e3dde8 100644
--- a/src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt
+++ b/src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt
@@ -1 +1,3 @@
 #nullable enable
+*REMOVED*Microsoft.AspNetCore.Mvc.Razor.RazorPage<TModel>.Model.get -> TModel?
+Microsoft.AspNetCore.Mvc.Razor.RazorPage<TModel>.Model.get -> TModel
diff --git a/src/Mvc/Mvc.Razor/src/RazorPageOfT.cs b/src/Mvc/Mvc.Razor/src/RazorPageOfT.cs
index eb115161777..cc0ae56e1f1 100644
--- a/src/Mvc/Mvc.Razor/src/RazorPageOfT.cs
+++ b/src/Mvc/Mvc.Razor/src/RazorPageOfT.cs
@@ -15,13 +15,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor
         /// <summary>
         /// Gets the Model property of the <see cref="ViewData"/> property.
         /// </summary>
-        public TModel? Model => ViewData == null ? default(TModel) : ViewData.Model;
+        public TModel Model => ViewData.Model;
 
         /// <summary>
         /// Gets or sets the dictionary for view data.
         /// </summary>
         [RazorInject]
         public ViewDataDictionary<TModel> ViewData { get; set; } = default!;
-
     }
 }
diff --git a/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt b/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt
index 7dc5c58110b..73d4cbd64fd 100644
--- a/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt
+++ b/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt
@@ -1 +1,3 @@
 #nullable enable
+*REMOVED*Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TModel>.Model.get -> TModel?
+Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<TModel>.Model.get -> TModel
diff --git a/src/Mvc/Mvc.ViewFeatures/src/ViewDataDictionaryOfT.cs b/src/Mvc/Mvc.ViewFeatures/src/ViewDataDictionaryOfT.cs
index 3640fdea028..9933bfe667d 100644
--- a/src/Mvc/Mvc.ViewFeatures/src/ViewDataDictionaryOfT.cs
+++ b/src/Mvc/Mvc.ViewFeatures/src/ViewDataDictionaryOfT.cs
@@ -86,16 +86,10 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures
         }
 
         /// <inheritdoc />
-        public new TModel? Model
+        public new TModel Model
         {
-            get
-            {
-                return (base.Model == null) ? default(TModel) : (TModel)base.Model;
-            }
-            set
-            {
-                base.Model = value;
-            }
+            get => (base.Model is null) ? default! : (TModel)base.Model;
+            set => base.Model = value;
         }
     }
 }
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/Error.cshtml b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/Error.cshtml
index 10cf32b713d..a1e04783c67 100644
--- a/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/Error.cshtml
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/StarterWeb-CSharp/Views/Shared/Error.cshtml
@@ -6,10 +6,10 @@
 <h1 class="text-danger">Error.</h1>
 <h2 class="text-danger">An error occurred while processing your request.</h2>
 
-@if (Model?.ShowRequestId ?? false)
+@if (Model.ShowRequestId)
 {
     <p>
-        <strong>Request ID:</strong> <code>@Model?.RequestId</code>
+        <strong>Request ID:</strong> <code>@Model.RequestId</code>
     </p>
 }
 
-- 
GitLab