다음을 통해 공유


Route.Constraints 속성

정의

URL 매개 변수의 유효한 값을 지정하는 식의 사전을 가져오거나 설정합니다.

public:
 property System::Web::Routing::RouteValueDictionary ^ Constraints { System::Web::Routing::RouteValueDictionary ^ get(); void set(System::Web::Routing::RouteValueDictionary ^ value); };
public System.Web.Routing.RouteValueDictionary Constraints { get; set; }
member this.Constraints : System.Web.Routing.RouteValueDictionary with get, set
Public Property Constraints As RouteValueDictionary

속성 값

매개 변수 이름 및 식을 포함하는 개체입니다.

예제

다음 예제에서는 개체를 Route 만들고 , DataTokensDefaults 속성을 설정하는 Constraints방법을 보여줍니다.

void Application_Start(object sender, EventArgs e) 
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    Route reportRoute = new Route("{locale}/{year}", new ReportRouteHandler());
    reportRoute.Defaults = new RouteValueDictionary { { "locale", "en-US" }, { "year", DateTime.Now.Year.ToString() } };
    reportRoute.Constraints = new RouteValueDictionary { { "locale", "[a-z]{2}-[a-z]{2}" }, { "year", @"\d{4}" } };
    reportRoute.DataTokens = new RouteValueDictionary { { "format", "short" } };
    routes.Add(reportRoute);
}
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    RegisterRoutes(RouteTable.Routes)
End Sub

Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
    Dim urlPattern As String
    Dim reportRoute As Route
    
    urlPattern = "{locale}/{year}"
    
    reportRoute = New Route(urlPattern, New ReportRouteHandler)
    reportRoute.Defaults = New RouteValueDictionary(New With {.locale = "en-US", .year = DateTime.Now.Year.ToString()})
    reportRoute.Constraints = New RouteValueDictionary(New With {.locale = "[a-z]{2}-[a-z]{2}", .year = "\d{4}"})
    reportRoute.DataTokens = New RouteValueDictionary(New With {.format = "short"})

    routes.Add(reportRoute)
End Sub

다음 예제에서는 해당 속성이 Constraints 값에 대한 클래스의 인스턴스와 함께 라는 httpMethod 매개 변수를 HttpMethodConstraint 포함하는 개체를 보여 Route 줍니다.

void Application_Start(object sender, EventArgs e) 
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    string[] allowedMethods = { "GET", "POST" };
    HttpMethodConstraint methodConstraints = new HttpMethodConstraint(allowedMethods);

    Route reportRoute = new Route("{locale}/{year}", new ReportRouteHandler());
    reportRoute.Constraints = new RouteValueDictionary { { "httpMethod", methodConstraints } };

    routes.Add(reportRoute);
}
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    RegisterRoutes(RouteTable.Routes)
End Sub

Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
    Dim urlPattern As String
    Dim reportRoute As Route
    Dim allowedMethods() As String = {"GET", "POST"}
    Dim methodConstraints As HttpMethodConstraint  
    
    methodConstraints = New HttpMethodConstraint(allowedMethods)
    
    Dim constraintValues = New With {.httpMethod = methodConstraints}
    
    urlPattern = "{locale}/{year}"
    
    reportRoute = New Route(urlPattern, New ReportRouteHandler)
    reportRoute.Constraints = New RouteValueDictionary(constraintValues)
    
    routes.Add(reportRoute)
End Sub

설명

속성을 Constraints 사용하면 경로에서 처리되는 URL 매개 변수에 허용되는 값을 제한할 수 있습니다. 속성에 RouteValueDictionary 개체를 할당합니다 Constraints . 개체의 RouteValueDictionary 각 요소에는 매개 변수의 이름과 다음 중 하나가 포함됩니다.

  • 정규식을 정의하는 문자열입니다. 정규식은 대/소문자를 구분하지 않습니다.

  • 인터페이스를 구현하고 메서드를 IRouteConstraint 포함하는 개체입니다 Match .

HttpMethodConstraint 클래스가 IRouteConstraint 인터페이스를 구현합니다. 클래스의 HttpMethodConstraint 인스턴스를 제약 조건으로 포함하여 경로에 허용되는 HTTP 동사를 지정할 수 있습니다.

적용 대상

추가 정보