我已经看过这篇关于如何创建模型绑定器提供程序来支持接口的博客文章。
但是我不知道如何处理实际的模型活页夹。
我知道我可以继承,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; }