From 2f639b48fec057574c62dc6f31ee74ce67d4e1a5 Mon Sep 17 00:00:00 2001 From: haileymck Date: Tue, 19 May 2026 15:48:48 -0700 Subject: [PATCH 1/2] Add IsRazorPages property to IdentityModel and update layout path logic in _ViewStart templates --- .../dotnet-scaffold/AspNet/Models/IdentityModel.cs | 5 +++++ .../AspNet/ScaffoldSteps/ValidateIdentityStep.cs | 4 +++- .../AspNet/Templates/net10.0/Identity/Pages/_ViewStart.cs | 4 +++- .../AspNet/Templates/net10.0/Identity/Pages/_ViewStart.tt | 2 +- .../AspNet/Templates/net11.0/Identity/Pages/_ViewStart.cs | 4 +++- .../AspNet/Templates/net11.0/Identity/Pages/_ViewStart.tt | 2 +- .../AspNet/Templates/net9.0/Identity/Pages/_ViewStart.cs | 4 +++- .../AspNet/Templates/net9.0/Identity/Pages/_ViewStart.tt | 2 +- 8 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Models/IdentityModel.cs b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Models/IdentityModel.cs index 54aa86ef9a..6410d9e43b 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Models/IdentityModel.cs +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Models/IdentityModel.cs @@ -45,4 +45,9 @@ internal class IdentityModel /// Gets or sets a value indicating whether to overwrite existing files. /// public bool Overwrite { get; set; } + /// + /// Gets or sets a value indicating whether the target project is a Razor Pages project. + /// Used to determine the correct layout path in _ViewStart.cshtml. + /// + public bool IsRazorPages { get; set; } } diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/ScaffoldSteps/ValidateIdentityStep.cs b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/ScaffoldSteps/ValidateIdentityStep.cs index fe5d105c11..4eb2627f76 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/ScaffoldSteps/ValidateIdentityStep.cs +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/ScaffoldSteps/ValidateIdentityStep.cs @@ -217,6 +217,7 @@ public override async Task ExecuteAsync(ScaffolderContext context, Cancell userClassNamespace = $"{projectName}.Data"; } + bool isRazorPages = Directory.Exists(Path.Combine(projectDirectory, "Pages")); IdentityModel scaffoldingModel = new() { ProjectInfo = projectInfo, @@ -226,7 +227,8 @@ public override async Task ExecuteAsync(ScaffolderContext context, Cancell UserClassNamespace = userClassNamespace, IdentityLayoutNamespace = identityLayoutNamespace, BaseOutputPath = projectDirectory, - Overwrite = settings.Overwrite + Overwrite = settings.Overwrite, + IsRazorPages = isRazorPages }; if (scaffoldingModel.ProjectInfo is not null && scaffoldingModel.ProjectInfo.CodeService is not null) diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net10.0/Identity/Pages/_ViewStart.cs b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net10.0/Identity/Pages/_ViewStart.cs index f234219d2d..86dd3c7561 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net10.0/Identity/Pages/_ViewStart.cs +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net10.0/Identity/Pages/_ViewStart.cs @@ -25,7 +25,9 @@ public partial class _ViewStart : _ViewStartBase /// public virtual string TransformText() { - this.Write("@{\r\n Layout = \"/Pages/Shared/_Layout.cshtml\";\r\n}\r\n"); + this.Write("@{\r\n Layout = \""); + this.Write(this.ToStringHelper.ToStringWithCulture(Model.IsRazorPages ? "/Pages/Shared/_Layout.cshtml" : "/Views/Shared/_Layout.cshtml")); + this.Write("\";\r\n}\r\n"); return this.GenerationEnvironment.ToString(); } private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue; diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net10.0/Identity/Pages/_ViewStart.tt b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net10.0/Identity/Pages/_ViewStart.tt index 6cc92e3f7a..40dfed52d7 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net10.0/Identity/Pages/_ViewStart.tt +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net10.0/Identity/Pages/_ViewStart.tt @@ -4,5 +4,5 @@ <#@ import namespace="System.Text" #> <#@ import namespace="System.Linq" #> @{ - Layout = "/Pages/Shared/_Layout.cshtml"; + Layout = "<#= Model.IsRazorPages ? "/Pages/Shared/_Layout.cshtml" : "/Views/Shared/_Layout.cshtml" #>"; } diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net11.0/Identity/Pages/_ViewStart.cs b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net11.0/Identity/Pages/_ViewStart.cs index 09932d9931..4375cdfec1 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net11.0/Identity/Pages/_ViewStart.cs +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net11.0/Identity/Pages/_ViewStart.cs @@ -25,7 +25,9 @@ public partial class _ViewStart : _ViewStartBase /// public virtual string TransformText() { - this.Write("@{\r\n Layout = \"/Pages/Shared/_Layout.cshtml\";\r\n}\r\n"); + this.Write("@{\r\n Layout = \""); + this.Write(this.ToStringHelper.ToStringWithCulture(Model.IsRazorPages ? "/Pages/Shared/_Layout.cshtml" : "/Views/Shared/_Layout.cshtml")); + this.Write("\";\r\n}\r\n"); return this.GenerationEnvironment.ToString(); } private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue; diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net11.0/Identity/Pages/_ViewStart.tt b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net11.0/Identity/Pages/_ViewStart.tt index 6cc92e3f7a..40dfed52d7 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net11.0/Identity/Pages/_ViewStart.tt +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net11.0/Identity/Pages/_ViewStart.tt @@ -4,5 +4,5 @@ <#@ import namespace="System.Text" #> <#@ import namespace="System.Linq" #> @{ - Layout = "/Pages/Shared/_Layout.cshtml"; + Layout = "<#= Model.IsRazorPages ? "/Pages/Shared/_Layout.cshtml" : "/Views/Shared/_Layout.cshtml" #>"; } diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net9.0/Identity/Pages/_ViewStart.cs b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net9.0/Identity/Pages/_ViewStart.cs index 05b7804104..d341bc4adb 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net9.0/Identity/Pages/_ViewStart.cs +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net9.0/Identity/Pages/_ViewStart.cs @@ -25,7 +25,9 @@ public partial class _ViewStart : _ViewStartBase /// public virtual string TransformText() { - this.Write("@{\r\n Layout = \"/Pages/Shared/_Layout.cshtml\";\r\n}\r\n"); + this.Write("@{\r\n Layout = \""); + this.Write(this.ToStringHelper.ToStringWithCulture(Model.IsRazorPages ? "/Pages/Shared/_Layout.cshtml" : "/Views/Shared/_Layout.cshtml")); + this.Write("\";\r\n}\r\n"); return this.GenerationEnvironment.ToString(); } private global::Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost hostValue; diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net9.0/Identity/Pages/_ViewStart.tt b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net9.0/Identity/Pages/_ViewStart.tt index 6cc92e3f7a..40dfed52d7 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net9.0/Identity/Pages/_ViewStart.tt +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/Templates/net9.0/Identity/Pages/_ViewStart.tt @@ -4,5 +4,5 @@ <#@ import namespace="System.Text" #> <#@ import namespace="System.Linq" #> @{ - Layout = "/Pages/Shared/_Layout.cshtml"; + Layout = "<#= Model.IsRazorPages ? "/Pages/Shared/_Layout.cshtml" : "/Views/Shared/_Layout.cshtml" #>"; } From 6c57fb9622f8b48c625e9c586f5f8100aa349c27 Mon Sep 17 00:00:00 2001 From: haileymck Date: Wed, 20 May 2026 16:01:48 -0700 Subject: [PATCH 2/2] Update install scripts to 20.1.0-dev --- scripts/install-scaffold.cmd | 2 +- scripts/install-scaffold.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install-scaffold.cmd b/scripts/install-scaffold.cmd index 276e16d883..8278e87446 100644 --- a/scripts/install-scaffold.cmd +++ b/scripts/install-scaffold.cmd @@ -1,4 +1,4 @@ -set VERSION=20.0.0-dev +set VERSION=20.1.0-dev set DEFAULT_NUPKG_PATH=%userprofile%/.nuget/packages set SRC_DIR=%cd% set NUPKG=artifacts/packages/Debug/Shipping/ diff --git a/scripts/install-scaffold.sh b/scripts/install-scaffold.sh index 4156eb5813..1aaeddfb0c 100755 --- a/scripts/install-scaffold.sh +++ b/scripts/install-scaffold.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION=20.0.0-dev +VERSION=20.1.0-dev DEFAULT_NUPKG_PATH=~/.nuget/packages SRC_DIR=$(pwd) echo $SRC_DIR