File: Controllers\RouteDataController.cs
Web Access
Project: src\src\Mvc\test\WebSites\RoutingWebSite\Mvc.RoutingWebSite.csproj (Mvc.RoutingWebSite)
// 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;
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.Filters;
 
namespace RoutingWebSite;
 
public class RouteDataController : Controller
{
    public object Conventional()
    {
        return GetData();
    }
 
    [Route("RouteData/Attribute")]
    public object Attribute()
    {
        return GetData();
    }
 
    public object DataTokens()
    {
        return GetData();
    }
 
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (!context.RouteData.DataTokens.ContainsKey("actionName"))
        {
            context.RouteData.DataTokens.Add("actionName", ((ControllerActionDescriptor)context.ActionDescriptor).ActionName);
        }
    }
 
    private object GetData()
    {
        var routers = RouteData.Routers.Select(r => r.GetType().FullName).ToArray();
        var dataTokens = RouteData.DataTokens;
 
        return new
        {
            DataTokens = dataTokens,
            Routers = routers
        };
    }
}