ASP.NET MVC为所有ViewModel注册自定义Model Binder

时间:2015-05-22 11:10:08

标签: asp.net asp.net-mvc asp.net-mvc-viewmodel

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

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

如果我手动注册每个ViewModel""像以下一行一样,它完美地运作

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

如果有办法为所有我的viewModel进行这种注册,而不是逐个注册所有viewModel ,我需要知道。

1 个答案:

答案 0 :(得分:2)

正如我在原帖中评论的那样,您可以通过替换默认的活页夹

来注册所有型号的眼罩
ModelBinders.Binders.DefaultBinder = new ContextDataBinder();

然而对我的特定情况没有用,因为框架自动创建的ViewModel总是返回先前的ViewModel(在搜索中,例如它不会返回我的过滤结果但所有的结果)。

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