ASP.NET MVC 为所有 ViewModel 注册自定义模型绑定器

ASP.NET MVC Register custom Model Binder for all ViewModels

我创建了一个完美运行的自定义模型活页夹。

我所有的 ViewModel 都扩展了 BaseViewModel,但是当我为 BaseViewModel 注册 Model Binder 时,它并没有 运行。

如果我像下面这样注册每个 ViewModel "by hand",它就可以完美运行

ModelBinders.Binders[typeof(ArticlesViewModel)] =  new ContextDataBinder();

我需要知道是否有一种方法可以为 我的所有 viewModel 进行这种注册,而无需一个一个地注册所有 viewModel

正如我原来评论的那样post你可以通过替换默认活页夹来注册所有模型眼罩

ModelBinders.Binders.DefaultBinder = new ContextDataBinder();

但是 对我的具体情况不起作用 因为框架自动创建的 ViewModel 总是 return 以前的 ViewModel(例如在搜索中它不会' t return 我过滤了结果但所有结果)。

我最终创建了一个类型列表,其中仅包含实际需要通过 ModelBinder 传递的 ViewModel 的类型,并使用 foreach e 将它们一一注册。