From 4032de064eb79aee8fb4562afca7d7c610086aff Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Tue, 4 Apr 2017 14:50:15 -0700 Subject: [PATCH] Removing _PageStart.cshtml Pages now also use _ViewStart.cshtml Also contains some naming/text cleanup that was missed in the previous commit. --- .../{_PageStart.cshtml => _ViewStart.cshtml} | 0 .../Infrastructure/PageResultExecutor.cs | 2 +- .../Internal/PageActionInvoker.cs | 16 +++--- .../Internal/PageActionInvokerCacheEntry.cs | 8 +-- .../Internal/PageActionInvokerProvider.cs | 21 +++---- .../PageContext.cs | 4 +- .../RazorPagesTest.cs | 10 ++-- .../RazorPagesWithBasePathTest.cs | 10 ++-- .../Internal/PageActionInvokerProviderTest.cs | 55 ++++++++++--------- .../Pages/WithPageStart/_PageStart.cshtml | 1 - .../Index.cshtml | 0 .../_ViewImports.cshtml | 0 .../Index.cshtml | 0 .../Pages/WithViewStart/_ViewStart.cshtml | 1 + 14 files changed, 66 insertions(+), 62 deletions(-) rename samples/MvcSandbox/Pages/{_PageStart.cshtml => _ViewStart.cshtml} (100%) delete mode 100644 test/WebSites/RazorPagesWebSite/Pages/WithPageStart/_PageStart.cshtml rename test/WebSites/RazorPagesWebSite/Pages/{WithPageImport => WithViewImport}/Index.cshtml (100%) rename test/WebSites/RazorPagesWebSite/Pages/{WithPageImport => WithViewImport}/_ViewImports.cshtml (100%) rename test/WebSites/RazorPagesWebSite/Pages/{WithPageStart => WithViewStart}/Index.cshtml (100%) create mode 100644 test/WebSites/RazorPagesWebSite/Pages/WithViewStart/_ViewStart.cshtml diff --git a/samples/MvcSandbox/Pages/_PageStart.cshtml b/samples/MvcSandbox/Pages/_ViewStart.cshtml similarity index 100% rename from samples/MvcSandbox/Pages/_PageStart.cshtml rename to samples/MvcSandbox/Pages/_ViewStart.cshtml diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/Infrastructure/PageResultExecutor.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/Infrastructure/PageResultExecutor.cs index 02d07b5410..648841f361 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/Infrastructure/PageResultExecutor.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/Infrastructure/PageResultExecutor.cs @@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure pageContext.ViewData.Model = result.Model; } - var view = new RazorView(_razorViewEngine, _razorPageActivator, pageContext.PageStarts, result.Page, _htmlEncoder); + var view = new RazorView(_razorViewEngine, _razorPageActivator, pageContext.ViewStarts, result.Page, _htmlEncoder); pageContext.View = view; return ExecuteAsync(pageContext, result.ContentType, result.StatusCode); } diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvoker.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvoker.cs index c3b6a75c8e..3099ec48e9 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvoker.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvoker.cs @@ -307,22 +307,22 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal _pageContext.Page = _page; _pageContext.ValueProviderFactories = _valueProviderFactories; - IRazorPage[] pageStarts; + IRazorPage[] viewStarts; - if (CacheEntry.PageStartFactories == null || CacheEntry.PageStartFactories.Count == 0) + if (CacheEntry.ViewStartFactories == null || CacheEntry.ViewStartFactories.Count == 0) { - pageStarts = Array.Empty(); + viewStarts = Array.Empty(); } else { - pageStarts = new IRazorPage[CacheEntry.PageStartFactories.Count]; - for (var i = 0; i < pageStarts.Length; i++) + viewStarts = new IRazorPage[CacheEntry.ViewStartFactories.Count]; + for (var i = 0; i < viewStarts.Length; i++) { - var pageFactory = CacheEntry.PageStartFactories[i]; - pageStarts[i] = pageFactory(); + var pageFactory = CacheEntry.ViewStartFactories[i]; + viewStarts[i] = pageFactory(); } } - _pageContext.PageStarts = pageStarts; + _pageContext.ViewStarts = viewStarts; if (actionDescriptor.ModelTypeInfo == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvokerCacheEntry.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvokerCacheEntry.cs index b7d6ca1a69..f1b712d90d 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvokerCacheEntry.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvokerCacheEntry.cs @@ -18,7 +18,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal Func modelFactory, Action releaseModel, Func propertyBinder, - IReadOnlyList> pageStartFactories, + IReadOnlyList> viewStartFactories, FilterItem[] cacheableFilters) { ActionDescriptor = actionDescriptor; @@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal ModelFactory = modelFactory; ReleaseModel = releaseModel; PropertyBinder = propertyBinder; - PageStartFactories = pageStartFactories; + ViewStartFactories = viewStartFactories; CacheableFilters = cacheableFilters; } @@ -54,9 +54,9 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal public Func PropertyBinder { get; } /// - /// Gets the applicable PageStarts. + /// Gets the applicable ViewStart pages. /// - public IReadOnlyList> PageStartFactories { get; } + public IReadOnlyList> ViewStartFactories { get; } public FilterItem[] CacheableFilters { get; } } diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvokerProvider.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvokerProvider.cs index 3848303a88..c086f912c7 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvokerProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/Internal/PageActionInvokerProvider.cs @@ -25,7 +25,8 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal { public class PageActionInvokerProvider : IActionInvokerProvider { - private const string PageStartFileName = "_PageStart.cshtml"; + private const string ViewStartFileName = "_ViewStart.cshtml"; + private readonly IPageLoader _loader; private readonly IPageFactoryProvider _pageFactoryProvider; private readonly IPageModelFactoryProvider _modelFactoryProvider; @@ -192,7 +193,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal modelReleaser = _modelFactoryProvider.CreateModelDisposer(compiledActionDescriptor); } - var pageStartFactories = GetPageStartFactories(compiledActionDescriptor); + var viewStartFactories = GetViewStartFactories(compiledActionDescriptor); return new PageActionInvokerCacheEntry( compiledActionDescriptor, @@ -201,31 +202,31 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal modelFactory, modelReleaser, propertyBinder, - pageStartFactories, + viewStartFactories, cachedFilters); } // Internal for testing. - internal List> GetPageStartFactories(CompiledPageActionDescriptor descriptor) + internal List> GetViewStartFactories(CompiledPageActionDescriptor descriptor) { - var pageStartFactories = new List>(); - var pageStartItems = _razorProject.FindHierarchicalItems( + var viewStartFactories = new List>(); + var viewStartItems = _razorProject.FindHierarchicalItems( _razorPagesOptions.RootDirectory, descriptor.RelativePath, - PageStartFileName); - foreach (var item in pageStartItems) + ViewStartFileName); + foreach (var item in viewStartItems) { if (item.Exists) { var factoryResult = _razorPageFactoryProvider.CreateFactory(item.Path); if (factoryResult.Success) { - pageStartFactories.Insert(0, factoryResult.RazorPageFactory); + viewStartFactories.Insert(0, factoryResult.RazorPageFactory); } } } - return pageStartFactories; + return viewStartFactories; } // Internal for testing. diff --git a/src/Microsoft.AspNetCore.Mvc.RazorPages/PageContext.cs b/src/Microsoft.AspNetCore.Mvc.RazorPages/PageContext.cs index e45a6e94e1..c95a901ec3 100644 --- a/src/Microsoft.AspNetCore.Mvc.RazorPages/PageContext.cs +++ b/src/Microsoft.AspNetCore.Mvc.RazorPages/PageContext.cs @@ -79,9 +79,9 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages } /// - /// Gets or sets the applicable _PageStart instances. + /// Gets or sets the applicable _ViewStart instances. /// - public IReadOnlyList PageStarts { get; set; } + public IReadOnlyList ViewStarts { get; set; } /// /// Gets or sets the list of instances for the current request. diff --git a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs index 4e85ff597a..c7bdb62fd9 100644 --- a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesTest.cs @@ -444,28 +444,28 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests } [Fact] - public async Task PageStart_IsDiscoveredWhenRootDirectoryIsNotSpecified() + public async Task ViewStart_IsDiscoveredWhenRootDirectoryIsNotSpecified() { // Test for https://github.com/aspnet/Mvc/issues/5915 //Arrange - var expected = $"Hello from _PageStart{Environment.NewLine}Hello from /Pages/WithPageStart/Index.cshtml!"; + var expected = $"Hello from _ViewStart{Environment.NewLine}Hello from /Pages/WithViewStart/Index.cshtml!"; // Act - var response = await Client.GetStringAsync("/Pages/WithPageStart"); + var response = await Client.GetStringAsync("/Pages/WithViewStart"); // Assert Assert.Equal(expected, response.Trim()); } [Fact] - public async Task PageImport_IsDiscoveredWhenRootDirectoryIsNotSpecified() + public async Task ViewImport_IsDiscoveredWhenRootDirectoryIsNotSpecified() { // Test for https://github.com/aspnet/Mvc/issues/5915 // Arrange var expected = "Hello from CustomService!"; // Act - var response = await Client.GetStringAsync("/Pages/WithPageImport"); + var response = await Client.GetStringAsync("/Pages/WithViewImport"); // Assert Assert.Equal(expected, response.Trim()); diff --git a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesWithBasePathTest.cs b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesWithBasePathTest.cs index a5aa8c0d1e..2fd32e6d4d 100644 --- a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesWithBasePathTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/RazorPagesWithBasePathTest.cs @@ -116,28 +116,28 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests } [Fact] - public async Task PageStart_IsDiscoveredWhenRootDirectoryIsSpecified() + public async Task ViewStart_IsDiscoveredWhenRootDirectoryIsSpecified() { // Test for https://github.com/aspnet/Mvc/issues/5915 //Arrange - var expected = $"Hello from _PageStart{Environment.NewLine}Hello from /Pages/WithPageStart/Index.cshtml!"; + var expected = $"Hello from _ViewStart{Environment.NewLine}Hello from /Pages/WithViewStart/Index.cshtml!"; // Act - var response = await Client.GetStringAsync("/WithPageStart"); + var response = await Client.GetStringAsync("/WithViewStart"); // Assert Assert.Equal(expected, response.Trim()); } [Fact] - public async Task PageImport_IsDiscoveredWhenRootDirectoryIsSpecified() + public async Task ViewImport_IsDiscoveredWhenRootDirectoryIsSpecified() { // Test for https://github.com/aspnet/Mvc/issues/5915 //Arrange var expected = "Hello from CustomService!"; // Act - var response = await Client.GetStringAsync("/WithPageImport"); + var response = await Client.GetStringAsync("/WithViewImport"); // Assert Assert.Equal(expected, response.Trim()); diff --git a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/PageActionInvokerProviderTest.cs b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/PageActionInvokerProviderTest.cs index b4326bb87f..2f67f61d9f 100644 --- a/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/PageActionInvokerProviderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.RazorPages.Test/Internal/PageActionInvokerProviderTest.cs @@ -240,13 +240,16 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal var razorPageFactoryProvider = new Mock(); Func factory1 = () => null; Func factory2 = () => null; - razorPageFactoryProvider.Setup(f => f.CreateFactory("/Home/Path1/_PageStart.cshtml")) + razorPageFactoryProvider + .Setup(f => f.CreateFactory("/Home/Path1/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(factory1, new IChangeToken[0])); - razorPageFactoryProvider.Setup(f => f.CreateFactory("/_PageStart.cshtml")) + razorPageFactoryProvider.Setup(f => f.CreateFactory("/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(factory2, new[] { Mock.Of() })); + var fileProvider = new TestFileProvider(); - fileProvider.AddFile("/Home/Path1/_PageStart.cshtml", "content1"); - fileProvider.AddFile("/_PageStart.cshtml", "content2"); + fileProvider.AddFile("/Home/Path1/_ViewStart.cshtml", "content1"); + fileProvider.AddFile("/_ViewStart.cshtml", "content2"); + var defaultRazorProject = new TestRazorProject(fileProvider); var invokerProvider = CreateInvokerProvider( @@ -264,7 +267,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal Assert.NotNull(context.Result); var actionInvoker = Assert.IsType(context.Result); var entry = actionInvoker.CacheEntry; - Assert.Equal(new[] { factory2, factory1 }, entry.PageStartFactories); + Assert.Equal(new[] { factory2, factory1 }, entry.ViewStartFactories); } [Fact] @@ -606,7 +609,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal } [Fact] - public void GetPageStartFactories_FindsFullHeirarchy() + public void GetViewStartFactories_FindsFullHeirarchy() { // Arrange var descriptor = new PageActionDescriptor() @@ -623,22 +626,22 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal actionDescriptorProvider.Setup(p => p.ActionDescriptors).Returns(descriptorCollection); var fileProvider = new TestFileProvider(); - fileProvider.AddFile("/View/Deeper/Not_PageStart.cshtml", "page content"); - fileProvider.AddFile("/View/Wrong/_PageStart.cshtml", "page content"); - fileProvider.AddFile("/_PageStart.cshtml", "page content "); - fileProvider.AddFile("/Views/_PageStart.cshtml", "@page starts!"); - fileProvider.AddFile("/Views/Deeper/_PageStart.cshtml", "page content"); + fileProvider.AddFile("/View/Deeper/Not_ViewStart.cshtml", "page content"); + fileProvider.AddFile("/View/Wrong/_ViewStart.cshtml", "page content"); + fileProvider.AddFile("/_ViewStart.cshtml", "page content "); + fileProvider.AddFile("/Views/_ViewStart.cshtml", "@page starts!"); + fileProvider.AddFile("/Views/Deeper/_ViewStart.cshtml", "page content"); var razorProject = new TestRazorProject(fileProvider); var mock = new Mock(); - mock.Setup(p => p.CreateFactory("/Views/Deeper/_PageStart.cshtml")) + mock.Setup(p => p.CreateFactory("/Views/Deeper/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(() => null, new List())) .Verifiable(); - mock.Setup(p => p.CreateFactory("/Views/_PageStart.cshtml")) + mock.Setup(p => p.CreateFactory("/Views/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(() => null, new List())) .Verifiable(); - mock.Setup(p => p.CreateFactory("/_PageStart.cshtml")) + mock.Setup(p => p.CreateFactory("/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(() => null, new List())) .Verifiable(); var razorPageFactoryProvider = mock.Object; @@ -654,7 +657,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal var compiledDescriptor = CreateCompiledPageActionDescriptor(descriptor); // Act - var factories = invokerProvider.GetPageStartFactories(compiledDescriptor); + var factories = invokerProvider.GetViewStartFactories(compiledDescriptor); // Assert mock.Verify(); @@ -663,7 +666,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal [Theory] [InlineData("/Pages/Level1/")] [InlineData("/Pages/Level1")] - public void GetPageFactories_DoesNotFindPageStartsOutsideBaseDirectory(string rootDirectory) + public void GetPageFactories_DoesNotFindViewStartsOutsideBaseDirectory(string rootDirectory) { // Arrange var descriptor = new PageActionDescriptor() @@ -684,19 +687,19 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal actionDescriptorProvider.Setup(p => p.ActionDescriptors).Returns(descriptorCollection); var fileProvider = new TestFileProvider(); - fileProvider.AddFile("/_PageStart.cshtml", "page content"); - fileProvider.AddFile("/Pages/_PageStart.cshtml", "page content"); - fileProvider.AddFile("/Pages/Level1/_PageStart.cshtml", "page content"); - fileProvider.AddFile("/Pages/Level1/Level2/_PageStart.cshtml", "page content"); - fileProvider.AddFile("/Pages/Level1/Level3/_PageStart.cshtml", "page content"); + fileProvider.AddFile("/_ViewStart.cshtml", "page content"); + fileProvider.AddFile("/Pages/_ViewStart.cshtml", "page content"); + fileProvider.AddFile("/Pages/Level1/_ViewStart.cshtml", "page content"); + fileProvider.AddFile("/Pages/Level1/Level2/_ViewStart.cshtml", "page content"); + fileProvider.AddFile("/Pages/Level1/Level3/_ViewStart.cshtml", "page content"); var razorProject = new TestRazorProject(fileProvider); var mock = new Mock(MockBehavior.Strict); - mock.Setup(p => p.CreateFactory("/Pages/Level1/Level2/_PageStart.cshtml")) + mock.Setup(p => p.CreateFactory("/Pages/Level1/Level2/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(() => null, new List())) .Verifiable(); - mock.Setup(p => p.CreateFactory("/Pages/Level1/_PageStart.cshtml")) + mock.Setup(p => p.CreateFactory("/Pages/Level1/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(() => null, new List())) .Verifiable(); var razorPageFactoryProvider = mock.Object; @@ -713,14 +716,14 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal razorPagesOptions: options); // Act - var factories = invokerProvider.GetPageStartFactories(compiledPageDescriptor); + var factories = invokerProvider.GetViewStartFactories(compiledPageDescriptor); // Assert mock.Verify(); } [Fact] - public void GetPageStartFactories_NoFactoriesForMissingFiles() + public void GetViewStartFactories_NoFactoriesForMissingFiles() { // Arrange var descriptor = new PageActionDescriptor() @@ -751,7 +754,7 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal var compiledDescriptor = CreateCompiledPageActionDescriptor(descriptor); // Act - var factories = invokerProvider.GetPageStartFactories(compiledDescriptor); + var factories = invokerProvider.GetViewStartFactories(compiledDescriptor); // Assert Assert.Empty(factories); diff --git a/test/WebSites/RazorPagesWebSite/Pages/WithPageStart/_PageStart.cshtml b/test/WebSites/RazorPagesWebSite/Pages/WithPageStart/_PageStart.cshtml deleted file mode 100644 index 65a09e5bb1..0000000000 --- a/test/WebSites/RazorPagesWebSite/Pages/WithPageStart/_PageStart.cshtml +++ /dev/null @@ -1 +0,0 @@ -Hello from _PageStart diff --git a/test/WebSites/RazorPagesWebSite/Pages/WithPageImport/Index.cshtml b/test/WebSites/RazorPagesWebSite/Pages/WithViewImport/Index.cshtml similarity index 100% rename from test/WebSites/RazorPagesWebSite/Pages/WithPageImport/Index.cshtml rename to test/WebSites/RazorPagesWebSite/Pages/WithViewImport/Index.cshtml diff --git a/test/WebSites/RazorPagesWebSite/Pages/WithPageImport/_ViewImports.cshtml b/test/WebSites/RazorPagesWebSite/Pages/WithViewImport/_ViewImports.cshtml similarity index 100% rename from test/WebSites/RazorPagesWebSite/Pages/WithPageImport/_ViewImports.cshtml rename to test/WebSites/RazorPagesWebSite/Pages/WithViewImport/_ViewImports.cshtml diff --git a/test/WebSites/RazorPagesWebSite/Pages/WithPageStart/Index.cshtml b/test/WebSites/RazorPagesWebSite/Pages/WithViewStart/Index.cshtml similarity index 100% rename from test/WebSites/RazorPagesWebSite/Pages/WithPageStart/Index.cshtml rename to test/WebSites/RazorPagesWebSite/Pages/WithViewStart/Index.cshtml diff --git a/test/WebSites/RazorPagesWebSite/Pages/WithViewStart/_ViewStart.cshtml b/test/WebSites/RazorPagesWebSite/Pages/WithViewStart/_ViewStart.cshtml new file mode 100644 index 0000000000..c0ad0e1adb --- /dev/null +++ b/test/WebSites/RazorPagesWebSite/Pages/WithViewStart/_ViewStart.cshtml @@ -0,0 +1 @@ +Hello from _ViewStart