| File: Infrastructure\RazorPageAdapter.cs | Web Access |
| Project: src\aspnetcore\src\Mvc\Mvc.RazorPages\src\Microsoft.AspNetCore.Mvc.RazorPages.csproj (Microsoft.AspNetCore.Mvc.RazorPages) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.AspNetCore.Mvc.Rendering; namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure; /// <summary> /// Implements IRazorPage so that RazorPageBase-derived classes don't get activated twice. /// The page gets activated before handler methods run, but the RazorView will also activate /// each page. /// </summary> public class RazorPageAdapter : IRazorPage, IModelTypeProvider { private readonly RazorPageBase _page; private readonly Type _modelType; /// <summary> /// Instantiates a new instance of <see cref="RazorPageAdapter"/>. /// </summary> /// <param name="page">The <see cref="RazorPageBase"/>.</param> /// <param name="modelType">The model type.</param> public RazorPageAdapter(RazorPageBase page, Type modelType) { _page = page ?? throw new ArgumentNullException(nameof(page)); _modelType = modelType ?? throw new ArgumentNullException(nameof(modelType)); } /// <inheritdoc/> public ViewContext ViewContext { get { return _page.ViewContext; } set { _page.ViewContext = value; } } /// <inheritdoc/> public IHtmlContent? BodyContent { get { return _page.BodyContent; } set { _page.BodyContent = value; } } /// <inheritdoc/> public bool IsLayoutBeingRendered { get { return _page.IsLayoutBeingRendered; } set { _page.IsLayoutBeingRendered = value; } } /// <inheritdoc/> public string Path { get { return _page.Path; } set { _page.Path = value; } } /// <inheritdoc/> public string? Layout { get { return _page.Layout; } set { _page.Layout = value; } } /// <inheritdoc/> public IDictionary<string, RenderAsyncDelegate> PreviousSectionWriters { get { return _page.PreviousSectionWriters; } set { _page.PreviousSectionWriters = value; } } /// <inheritdoc/> public IDictionary<string, RenderAsyncDelegate> SectionWriters => _page.SectionWriters; /// <inheritdoc/> public void EnsureRenderedBodyOrSections() { _page.EnsureRenderedBodyOrSections(); } /// <inheritdoc/> public Task ExecuteAsync() { return _page.ExecuteAsync(); } Type IModelTypeProvider.GetModelType() => _modelType; }