| File: Infrastructure\PageActionInvokerCacheEntry.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.Mvc.Filters; using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; namespace Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure; internal sealed class PageActionInvokerCacheEntry { public PageActionInvokerCacheEntry( CompiledPageActionDescriptor actionDescriptor, Func<IModelMetadataProvider, ModelStateDictionary, ViewDataDictionary> viewDataFactory, Func<PageContext, ViewContext, object> pageFactory, Func<PageContext, ViewContext, object, ValueTask>? releasePage, Func<PageContext, object>? modelFactory, Func<PageContext, object, ValueTask>? releaseModel, Func<PageContext, object, Task> propertyBinder, PageHandlerExecutorDelegate[] handlerExecutors, PageHandlerBinderDelegate[] handlerBinders, IReadOnlyList<Func<IRazorPage>> viewStartFactories, FilterItem[] cacheableFilters) { ActionDescriptor = actionDescriptor; ViewDataFactory = viewDataFactory; PageFactory = pageFactory; ReleasePage = releasePage; ModelFactory = modelFactory; ReleaseModel = releaseModel; PropertyBinder = propertyBinder; HandlerExecutors = handlerExecutors; HandlerBinders = handlerBinders; ViewStartFactories = viewStartFactories; CacheableFilters = cacheableFilters; } public CompiledPageActionDescriptor ActionDescriptor { get; } public Func<PageContext, ViewContext, object> PageFactory { get; } /// <summary> /// The action invoked to release a page. This may be <c>null</c>. /// </summary> public Func<PageContext, ViewContext, object, ValueTask>? ReleasePage { get; } public Func<PageContext, object>? ModelFactory { get; } /// <summary> /// The delegate invoked to release a model. This may be <c>null</c>. /// </summary> public Func<PageContext, object, ValueTask>? ReleaseModel { get; } /// <summary> /// The delegate invoked to bind either the handler type (page or model). /// This may be <c>null</c>. /// </summary> public Func<PageContext, object, Task> PropertyBinder { get; } public PageHandlerExecutorDelegate[] HandlerExecutors { get; } public PageHandlerBinderDelegate[] HandlerBinders { get; } public Func<IModelMetadataProvider, ModelStateDictionary, ViewDataDictionary> ViewDataFactory { get; } /// <summary> /// Gets the applicable ViewStart pages. /// </summary> public IReadOnlyList<Func<IRazorPage>> ViewStartFactories { get; } public FilterItem[] CacheableFilters { get; } }