Clean up ViewStartPages usage in RazorView

Fixes #3682
This commit is contained in:
Sebastien Ros 2015-12-07 10:08:43 -08:00
parent cf6662d0c3
commit 774ee05508
1 changed files with 7 additions and 7 deletions

View File

@ -98,14 +98,14 @@ namespace Microsoft.AspNet.Mvc.Razor
} }
_bufferScope = context.HttpContext.RequestServices.GetRequiredService<IRazorBufferScope>(); _bufferScope = context.HttpContext.RequestServices.GetRequiredService<IRazorBufferScope>();
var bodyWriter = await RenderPageAsync(RazorPage, context, ViewStartPages); var bodyWriter = await RenderPageAsync(RazorPage, context, invokeViewStarts: true);
await RenderLayoutAsync(context, bodyWriter); await RenderLayoutAsync(context, bodyWriter);
} }
private async Task<RazorTextWriter> RenderPageAsync( private async Task<RazorTextWriter> RenderPageAsync(
IRazorPage page, IRazorPage page,
ViewContext context, ViewContext context,
IReadOnlyList<IRazorPage> viewStartPages) bool invokeViewStarts)
{ {
Debug.Assert(_bufferScope != null); Debug.Assert(_bufferScope != null);
var buffer = new RazorBuffer(_bufferScope, page.Path); var buffer = new RazorBuffer(_bufferScope, page.Path);
@ -120,10 +120,10 @@ namespace Microsoft.AspNet.Mvc.Razor
try try
{ {
if (viewStartPages != null) if (invokeViewStarts)
{ {
// Execute view starts using the same context + writer as the page to render. // Execute view starts using the same context + writer as the page to render.
await RenderViewStartsAsync(context, viewStartPages); await RenderViewStartsAsync(context);
} }
await RenderPageCoreAsync(page, context); await RenderPageCoreAsync(page, context);
@ -144,13 +144,13 @@ namespace Microsoft.AspNet.Mvc.Razor
return page.ExecuteAsync(); return page.ExecuteAsync();
} }
private async Task RenderViewStartsAsync(ViewContext context, IReadOnlyList<IRazorPage> viewStartPages) private async Task RenderViewStartsAsync(ViewContext context)
{ {
string layout = null; string layout = null;
var oldFilePath = context.ExecutingFilePath; var oldFilePath = context.ExecutingFilePath;
try try
{ {
for (var i = 0; i < viewStartPages.Count; i++) for (var i = 0; i < ViewStartPages.Count; i++)
{ {
var viewStart = ViewStartPages[i]; var viewStart = ViewStartPages[i];
context.ExecutingFilePath = viewStart.Path; context.ExecutingFilePath = viewStart.Path;
@ -211,7 +211,7 @@ namespace Microsoft.AspNet.Mvc.Razor
previousPage.IsLayoutBeingRendered = true; previousPage.IsLayoutBeingRendered = true;
layoutPage.PreviousSectionWriters = previousPage.SectionWriters; layoutPage.PreviousSectionWriters = previousPage.SectionWriters;
layoutPage.BodyContent = bodyWriter.Buffer; layoutPage.BodyContent = bodyWriter.Buffer;
bodyWriter = await RenderPageAsync(layoutPage, context, viewStartPages: null); bodyWriter = await RenderPageAsync(layoutPage, context, invokeViewStarts: false);
renderedLayouts.Add(layoutPage); renderedLayouts.Add(layoutPage);
previousPage = layoutPage; previousPage = layoutPage;