인터페이스를 지원하는 모델 바인더 공급자를 만드는 방법에 대한 블로그 게시물을 보았습니다.모델 MVC4의 인터페이스 바인딩
그러나 나는 실제 모델 바인더를 처리하는 방법으로 손실입니다.
내가 DefaultModelBinder
을 상속 할 수 있다는 것을 알고 있지만 사용자 정의 모델 바인더에서 관련 콘크리트 클래스를 어떻게 작동합니까? CreateModel 함수에서이 작업을 수행합니까? 그렇다면 어떻게해야할까요?
예 내 인터페이스에 대한 구조와 클래스의 일부 :
ModelBinders.Binders.Add(typeof(IAnswerControlViewModel), new AnswerControlModelBinder());
var answerControlBinderProvider = new InheritanceAwareModelBinderProvider
{
{ typeof (IAnswerControlViewModel), new AnswerControlModelBinder() }
};
ModelBinderProviders.BinderProviders.Add(answerControlBinderProvider);
:
public interface IAnswerControlViewModel : IQuestionAnswerControl
{
...
}
public class AnswerControl<T> : IAnswerControlViewModel
{
..
}
public class AnswerCheckBox : AnswerControl<bool>
{
}
public class AnswerMultiLineText : AnswerControl<string>
{
[DataType(DataType.MultilineText)]
public override string Value { get; set; }
}
public class AnswerCheckBoxListModal: AnswerControl<AnswerMultiSelectListValueType>
{
public string ModalName { get; set; }
}
이것은 내가 블로그 게시물에서 예제를 사용하여 내에서 Global.asax에 가지고 바인딩 모델 목표는 작업에 게시하는 동안 MVC에 바인딩 모델을 만드는 방법을 알리는 것입니다.
public IList<IAnswerControlViewModel> AnswerControls { get; set; }
나는 이미 Ninject를 사용하고 있지만 이것을 모델 바인딩에 적용하는 방법을 모르겠습니다. 내 상황은 그 인터페이스를 사용하는 일반 AnswerControl 클래스와 동일한 AnswerControls 목록에있을 것으로 예상되는 AnswerControl 을 상속하는 클래스가 있기 때문에 상황이 좀 더 복잡해 보입니다. –
Pricey
지금까지이 기사를 보았습니다. http://msdn.microsoft.com/en-us/magazine/hh781022.aspx에는 내 상황을 처리하는 방법에 대해 조금 더 설명하는 예제 추상 모델 바인더가 있지만, 아직 나오지 않았습니다. 아직 해결책은 없다. – Pricey
어느 시점에서 모델 바인더 (또는 IoC 컨테이너)에 바인딩 할 모델을 구성/알려야 할 것입니다. 여러 개의 동일한 구체적인 구현이있을 수 있으므로 어떤 모델이 맞는지 "짐작할"수 있다고 생각하지 않습니다. 어쩌면 당신은 하드 코딩되거나 구성된 사전을 갖고 싶고, 다시 매핑 할 타입을 기술 할 것인가? 당신의 삶을 훨씬 쉽게 만들어 줄 수 있습니다. 생각할 것 : – thmshd