我已经看过这篇博客文章,介绍如何创建模型绑定程序提供程序以支持接口。
但是我对如何处理实际的模型活页夹感到茫然。
我知道我可以继承DefaultModelBinder
,但是如何在自定义模型绑定器中找出相关的具体类,你是否在CreateModel函数中执行此操作?如果是这样,你怎么做?
我的界面和一些类的示例结构:
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中获得的模型绑定:
ModelBinders.Binders.Add(typeof(IAnswerControlViewModel), new AnswerControlModelBinder());
var answerControlBinderProvider = new InheritanceAwareModelBinderProvider
{
{ typeof (IAnswerControlViewModel), new AnswerControlModelBinder() }
};
ModelBinderProviders.BinderProviders.Add(answerControlBinderProvider);
目标是让MVC知道如何在帖子到动作期间对此进行绑定:
public IList<IAnswerControlViewModel> AnswerControls { get; set; }