5

Ci sono numerosi tutorial su come creare RouteConstraints nelle versioni precedenti MVC:Come registrare RouteConstraints in MVC6

Come funziona questo lavoro con MVC6, in particolare la registrazione del vincolo del percorso personalizzato, quindi può essere utilizzato negli attributi delle azioni ApiController?

ho creato un vincolo percorso personalizzato, chiamato NonEmptyGuid, che in realtà solo assicura un GUID non vuoto viene utilizzato come parametro di un GET Azione:

public class NonEmptyGuid : IRouteConstraint 
{ 
    public bool Match(HttpContext httpContext, IRouter route, string routeKey, IDictionary<string, object> values, RouteDirection routeDirection) 
    { 
     if (!values.ContainsKey(routeKey)) return false; 

     if (values[routeKey].ToString().Equals(Guid.Empty.ToString())) return false; 

     return true; 
    } 
} 

Domanda: Come e dove si registra questo RouteConstraint personalizzato per un'applicazione MVC6 (ad esempio in questo caso in un progetto WebApi).

risposta

0

È possibile utilizzare RouteOptions per registrare i tuoi vincoli:

services.Configure<RouteOptions>(options => 
           options 
           .ConstraintMap 
           .Add("test", typeof(TestRouteConstraint)));