/// <summary> /// Create a catch all constraint for the given key. /// </summary> /// <param name="routeKey">Route key.</param> /// <returns>a <see cref="RouteDataActionConstraint"/> that represents a catch all constraint.</returns> public static RouteDataActionConstraint CreateCatchAll(string routeKey) { var c = new RouteDataActionConstraint(routeKey); c.KeyHandling = RouteKeyHandling.CatchAll; c.RouteValue = string.Empty; return c; }
public void RouteDataActionConstraint_RequireKeyByPassingNonEmpty() { var routeDataConstraint = new RouteDataActionConstraint("key", "value"); Assert.Equal(routeDataConstraint.RouteKey, "key"); Assert.Equal(routeDataConstraint.KeyHandling, RouteKeyHandling.RequireKey); Assert.Equal(routeDataConstraint.RouteValue, "value"); }
public void RouteDataActionConstraint_DenyKeyByPassingNull() { var routeDataConstraint = new RouteDataActionConstraint("key", null); Assert.Equal(routeDataConstraint.RouteKey, "key"); Assert.Equal(routeDataConstraint.KeyHandling, RouteKeyHandling.DenyKey); Assert.Equal(routeDataConstraint.RouteValue, string.Empty); }
/// <summary> /// Create a catch all constraint for the given key. /// </summary> /// <param name="routeKey">Route key.</param> /// <returns>a <see cref="RouteDataActionConstraint"/> that represents a catch all constraint.</returns> public static RouteDataActionConstraint CreateCatchAll(string routeKey) { var c = new RouteDataActionConstraint(routeKey); c.KeyHandling = RouteKeyHandling.CatchAll; c.RouteValue = string.Empty; return(c); }
private IEnumerable<ActionDescriptor> GetActions(Type type) { var prototype = (MvcModule)ActivatorUtilities.CreateInstance(_services, type); int i = 0; foreach (var action in prototype.Actions) { var filters = type.GetTypeInfo() .GetCustomAttributes(inherit: true) .OfType<IFilterMetadata>() .Select(filter => new FilterDescriptor(filter, FilterScope.Controller)) .OrderBy(d => d, FilterDescriptorOrderComparer.Comparer) .ToList(); RouteDataActionConstraint pathConstraint; if (action.Path == "/") { pathConstraint = new RouteDataActionConstraint("modulepath", string.Empty); } else { pathConstraint = new RouteDataActionConstraint("modulepath", action.Path.Substring(1)); } yield return new ModuleActionDescriptor() { FilterDescriptors = filters, Index = i++, ActionConstraints = new List<IActionConstraintMetadata>() { new HttpMethodConstraint(new [] { action.Verb }), }, ModuleType = type, Parameters = new List<ParameterDescriptor>(), // No Parameter support in this sample RouteConstraints = new List<RouteDataActionConstraint>() { new RouteDataActionConstraint("module", "true"), // only match a 'module' route pathConstraint, } }; } }