Skip to content
This repository was archived by the owner on Dec 14, 2018. It is now read-only.
This repository was archived by the owner on Dec 14, 2018. It is now read-only.

Add a new filter type for pages #6331

@rynowak

Description

@rynowak

Something like:

public delegate Task<PageHandlerExecutedContext> PageExecutionDelegate();

public class PageHandlerSelectedContext : FilterContext
{
    public virtual new CompiledPageActionDescriptor ActionDescriptor { get; }

    public virtual HandlerMethodDescriptor HandlerMethod { get; set; }

    public virtual IActionResult Result { get; set; }

    public virtual object HandlerInstance { get; }
}


public class PageHandlerExecutingContext : FilterContext
{
    public virtual new CompiledPageActionDescriptor ActionDescriptor { get; }

    public virtual HandlerMethodDescriptor HandlerMethod { get; }

    public virtual IActionResult Result { get; set; }

    public virtual IDictionary<string, object> HandlerArguments { get; }

    public virtual object HandlerInstance { get; }
}


public class PageHandlerExecutedContext : FilterContext
{
    public virtual new CompiledPageActionDescriptor ActionDescriptor { get; }

    public virtual HandlerMethodDescriptor HandlerMethod { get; }

    public virtual IActionResult Result { get; set; }

    public virtual object HandlerInstance { get; }

    public virtual bool Canceled { get; set; }

    public virtual Exception Exception { get; set; }

    public virtual ExceptionDispatchInfo ExceptionDispatchInfo { get; set; }

    public virtual bool ExceptionHandled { get; set; }
}

public interface IPageFilter : IFilterMetadata
{
    void OnPageHandlerSelected(PageHandlerSelectedContext context);

    void OnPageHandlerExecuting(PageHandlerExecutingContext context);

    void OnPageHandlerExecuted(PageHandlerExecutedContext context);
}

public interface IAsyncPageFilter : IFilterMetadata
{
    void OnPageHandlerSelection(PageHandlerSelectedContext context);

    void OnPageHandlerExecution(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next);
}


Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions