File: SaveTempDataAttribute.cs
Web Access
Project: src\src\Mvc\Mvc.ViewFeatures\src\Microsoft.AspNetCore.Mvc.ViewFeatures.csproj (Microsoft.AspNetCore.Mvc.ViewFeatures)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#nullable enable
 
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.ViewFeatures.Filters;
using Microsoft.Extensions.DependencyInjection;
 
namespace Microsoft.AspNetCore.Mvc.ViewFeatures;
 
/// <summary>
/// A filter that saves the <see cref="ITempDataDictionary"/> for a request.
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class SaveTempDataAttribute : Attribute, IFilterFactory, IOrderedFilter
{
    /// <summary>
    /// Initialize a new instance of <see cref="SaveTempDataAttribute"/>.
    /// </summary>
    public SaveTempDataAttribute()
    {
        // Since SaveTempDataFilter registers for a response's OnStarting callback, we want this filter to run
        // as early as possible to get the opportunity to register the call back before any other result filter
        // starts writing to the response stream.
        Order = int.MinValue + 100;
    }
 
    /// <inheritdoc />
    public int Order { get; set; }
 
    /// <inheritdoc />
    public bool IsReusable => true;
 
    /// <inheritdoc />
    public IFilterMetadata CreateInstance(IServiceProvider serviceProvider)
    {
        return serviceProvider.GetRequiredService<SaveTempDataFilter>();
    }
}