2010-04-06 5 views
2

내 클래스 다이어그램 :파생 개체 및 기본 사용자 정의 모델 바인더를 추가

BaseContentClass

  • 페이지가 상속 BaseContentClass
  • ...

하면 BaseContentClass을 상속 나는 이렇게한다

ModelBinders.Binders.Add(typeof(BaseContentObject), new BaseContentObjectCommonPropertiesBinder()); 

그러면 Tab 유형의 컨트롤러 작업 매개 변수가 나타나면 사용자 정의 모델 바인더가 실행되지 않습니다. 그것은 내가이 할 경우 트리거됩니다

:

ModelBinders.Binders.Add(typeof(Tab), new BaseContentObjectCommonPropertiesBinder()); 

을하지만 "N"숫자로 모든 파생 클래스를 연결하는 제 global.asax.cs에 문을 추가로 작성 가고 싶지 않아 내 사용자 정의 모델 바인더, 그렇습니까? 다른 옵션이 있는지 모르겠습니다.

답변

2

대신이 작업을 시도해보십시오. 나는 그것을 테스트하지는 못했지만 그것이 효과가있을 것이라고 확신한다.

[ModelBinder(typeof(BaseContentObjectCommonPropertiesBinder))] 
public class BaseContentObject {} 
+0

완벽하게 작동합니다 ... – mare

2

ModelBinders.Binders property은 유형을 키로 사용하는 ModelBinderDictionary 유형입니다. 결과적으로 기본 클래스에 대한 모델 바인더 등록을 무시합니다. 이 article from Los Techies 읽기 유형에 바인더 속성을 정의하여이 문제를 해결할 수 있다고 생각합니다. 기사의 순서 우선 순위를 참조하십시오.

+0

감사합니다. – mare