2010-03-24 3 views
1

이 MVC2이 더 나은 것 만약 내가 궁금하네요 MVC 1 & 2를 적용 일반 모델 바인딩 질문이지만, 여기 내 질문 :여러 사용자 정의 모델 바인더

public interface IEvent 
    public int Id 
    public string Title 
    public List<EventContact> Contacts 
    public List<EventDatesLocations> DatesLocations 

public class EventDatesLocations 
    public int Id 
    public DateTime StartDate 
    public DateTime EndDate 
    public List<EventLocation> Locations 

내가 모든 IEvent 바인딩을 기본적으로 수행 내 IEvent 클래스에 대한 사용자 정의 모델 바인더를 가지고 :

나는 매우 복잡한 모델을 가지고있다. Contacts 목록 바인딩을위한 기본 모델 바인더를 호출합니다. 이는 잘 작동합니다.

DatesLocations 물건을 바인딩 할 준비가되었지만 제대로하고 있는지 확인하고 싶습니다.

전체적으로 필자는 모델 바인딩에 대한 모든 세부 사항을 이해하고 있는지 잘 모르겠습니다. IEvent 안에 여러 모델의 바인더를 가지고있는 것이 더 좋을까요 아니면 하나의 IEvent 모델 바인더를 가지고 있겠습니까 (지금하고 있습니다). 필요한 바인더의 기본 바인더를 호출합니다.

전문가는 어떻게합니까? : P

+1

어떤 유형에 따라 다른 특성을 확인 후를 구현하는 객체로 작업 할 수없고 ... 인터페이스가 구현해야하는 계약이 정의 할 수 있습니다 기억 모델 바인딩에는 전문가가 없습니다.하지만 여기에는 사용자 정의 모델 바인더가 필요한 항목이 없다고 생각합니다. 어떻게 당신을 당신의 목록에 묶고 있습니까? 다음은 기본 바인더가 어떻게 처리하는지에 대한 기사입니다. http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx – Ryan

+0

@Ryan - 사용자 정의 모델 바인더를 사용하여 바인딩하는 주된 동기는 필자가 메인 이벤트 객체로 IEvent 인터페이스를 사용한다는 사실이었습니다. 기본 모델 바인더를 사용하여 즉시 IEvent의 인스턴스를 만들 수 없다고 말했습니다. 그것과 나는 그것이 어떤 종류의 IEvent인지에 기초하여 특정 속성을 바인딩 할 필요가있다. 쌍을 이루는 valueprovider 사전과 함께 기본 모델 바인더를 사용합니다. – Dan

답변

0

일부 중첩 모델 바인딩을 보려면 this question을보십시오.

위로이 질문으로 돌아가서 IEvent의 다른 구현에 대한 바인딩을 수행해야하지만, IEvent를 구현하는 유형에 따라 특정 속성을 바인딩해야한다고 언급합니다. 나는 이것이 일반적으로 좋지 않다고 말할 것이다. 왜? 하나의 모델 바인더를 얻으려고하기 때문에 특정 구현에 대해 알고있는 인터페이스에 대해 알 수 있습니다.

IEvent를 구현하기 위해 여러 클래스가 필요한 경우 (몇 가지 이유로) 각각에 대해 사용자 정의 바인더가 필요할 것입니다 (이 경로를 따라 가면 기본 바인더가 작동하는 구체적인 유형이 될 수 있지만) IEvent 인터페이스를 확장하여 모든 것에 설정할 속성을 포함해야합니다.

당신은 그들이 :-) 내가 '