using System; using System.Linq; using Microsoft.AspNetCore.Mvc; namespace Umbraco.Cms.Web.Common.Attributes { /// /// Indicates that a controller is a plugin controller and will be routed to its own area. /// [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public class PluginControllerAttribute : AreaAttribute { /// /// Initializes a new instance of the class. /// /// public PluginControllerAttribute(string areaName) : base(areaName) { // validate this, only letters and digits allowed. if (areaName.Any(c => !char.IsLetterOrDigit(c))) throw new FormatException($"Invalid area name \"{areaName}\": the area name can only contains letters and digits."); AreaName = areaName; } /// /// Gets the name of the area. /// public string AreaName { get; } } }