2

WebAPI에 익숙한 vNext로 첫 번째 API 응용 프로그램을 만들려고합니다. 유형 제약 조건이있는 속성 경로를 사용하고 싶습니다. 제약 조건 이름을 사용자 정의 클래스/열거 형에 매핑하는 일종의 구성을 작성하려면 어떻게해야합니까? 나는 과 어떻게 해야할지 전혀 모른다. https://github.com/aspnet/Routing에서 검색하면 아무 것도주지 않았습니다.속성 라우팅 사용자 지정 클래스 제약 조건을 등록 할 위치

routes.MapAttributeRoutes(cfg => 
{ 
    // ... 
    cfg.InlineRouteConstraints.Add("customenum", typeof(EnumRouteConstraint<MyEnum>)); 
}); 

답변

3

인라인 제약 options로 구성되어 있습니다 : 내 생각

는 (열거 형 제약에 대한) 곳이 코드 조각을 연결하는 장소가 있어야한다. 옵션을 정의하는 패턴이 ASPNET 5 일반적인 패턴입니다, 코드는 다음 버전에서 코드 변경의 시작 영역의 옵션 정의, 나는 최신 비트에서 작동 뭔가를 붙여 때문에 Startup.cs

public IServiceProvider ConfigureServices(IServiceCollection serviceCollection) 
{ 
    /// rest of the code 

    serviceCollection.Configure<RouteOptions>(routeOptions => 
    { 
     routeOptions => 
      routeOptions.ConstraintMap 
      .Add("yourstring", typeof(YourConstraintType))); 
    } 
} 

입니다. 프로젝트의 버전에 따라 조정해야 할 수도 있습니다.

Here is MVC가 사용자 정의 exists 제약을 추가하는 방법. 이 메시지는 AddMvc()에서 호출됩니다.

Here is MVC startup.cs 샘플.

Here is이 시나리오에 대한 샘플 및 테스트 추가 문제 추적.

또한 기존 경로에서도 인라인 제약 조건을 지원합니다.

+0

샘플 및 링크를 제공해 주셔서 감사합니다. ASPNET5 팀에 속한 것을 보았습니다. 실제 샘플/docs 콜렉션을 알려주십시오. 나는 무엇인가를 찾으려고 노력했다. 모든 것이 GitHub의 다른 repos와 asp.net 웹 사이트의 기사를 통해 흩어져있는 것 같다. – Rast

+1

지금은 물건이 실제로 흩어져 있습니다. 하지만 MVC 그 자체가 좋은 위치는 MVC repo 자체 일 것입니다. 1. 샘플 폴더 (원래 게시물의 지점을 가리 킵니다) 2. Tests/FunctionalTests/WebSites 폴더 -이 중 폴더 우리는 개별 기능의 사용 사례를 보여주는 (대부분) 전체 사이트를 가지고 있습니다. 그들은 주로 샘플로 의도되지는 않지만 꽤 광범위합니다. 광범위한 문서는 우리가 아직 작업하고있는 것입니다. 더 많은 작업을 수행 할 수 있습니다. –