2009-03-16 2 views
0

복잡한 동작 매개 변수의 모델 바인딩을 해제 할 수있는 특성이 있습니까?복잡한 작업 매개 변수에 대한 asp.net MVC의 바이 패스 모델 바인더?

내 시나리오는 다음과 같습니다. SQL에 Linq를 사용하지만 생성 된 클래스가 인터페이스를 구현하도록합니다. 예를 들어, IUser. 내 컨트롤러 동작 중 일부는 IUser 매개 변수를 허용하고 일부 뷰는 IUser 모델을 바인딩하지만 기본 모델 바인더가 IUser 구성 요소를 구성하는 것을 원하지 않습니다. 나는 그것을 위해 Action Filters를 사용한다. 이 배경의 생각은 작업에 사용자 세부 정보가 필요한 경우 작업 필터는 작업이 호출되기 전에 데이터베이스에서 가져옵니다.

DefaultModelBuilder가 실행될 때 발생하는 오류를 해결하기 위해 CreateModel에서 Null을 반환하는 null 모델 바인더를 만들었습니다.

ModelBinderDictionary binders = System.Web.Mvc.ModelBinders.Binders; 
binders[typeof(IUser)] = new NullModelBinder(); 

답변

0

아키텍처를 따르고 작업 필터가 수행중인 IUser 바인더를 만드는 것이 더 간단하지 않습니까? 현재 의도하지 않은 작업을 수행하기 위해 작업 필터를 왜곡하고 있으며 달성하려는 작업을 수행하기 위해 특별히 설계된 확장 점을 무시했습니다 (특정 방식으로 매개 변수의 인스턴스를 작성) .

맞춤 바인더가 아닌 동작 필터에 IUser를 만들 이유가 있습니까?