Когда использовать IModelBinder и DefaultModelBinder

У меня есть сайт MVC3, у которого будет модель, которая не будет работать с привязкой модели по умолчанию. Я просматриваю образцы кода в строке, и, похоже, я могу создать настраиваемое связующее устройство, которое либо реализует IModelBinder, либо наследует от DefaultModelBinder. Может ли кто-нибудь объяснить плюсы и минусы каждого подхода и, возможно, пример того, когда будет использоваться один подход, а не другой.

Спасибо заранее.

Ответы

Ответ 1

Оба подхода на самом деле одно и то же: DefaultModelbinder реализует IModelBinder, поэтому наследование от него - это способ, как другой, для реализации IModelBinder.

Pro для наследования от DefaultModelBinder: вы можете многократно использовать поведение из DefaultModelBinder и переопределять только те, которые вы хотите. Вам не нужно реализовывать с нуля.

Pro для собственной реализации IModelBinder: у вас есть только один метод для реализации (IModelBinder.BindModel), и вы полностью контролируете, что делает ваша реализация.

Правильный способ во многом зависит от того, что вам нужно от вашего настраиваемого связующего, но поведение DefaultModelBinder обычно является тем, что вам нужно (и в большинстве случаев простой старый DefaultModelBinder действительно является связующим, который вы хотите).