Подтвердить что ты не робот

Рекомендации по внедрению IModelBinder

Я ищу набор лучших практик для использования при реализации IModelBinder.

Я прочитал три разные книги MVC, и каждый из них делает некоторые немного разные вещи в своих реализациях без каких-либо реальных объяснений.

  • В книге Ханзельмана, Хаака, Гатри, Конири не упоминается IModelBinder
  • Палермо рекомендует расширить DefaultModelBinder вместо прямой реализации IModelBinder, но я действительно не вижу, как использовать преимущества
  • Сандерсон упоминает об обновлении существующих экземпляров модели, а также вызывает ModelState.SetModelValue(), чтобы следовать соглашению.

Я просто хочу удостовериться, что мои привязки модели следуют соглашениям, и что я правильно понимаю весь ModelBindingContext.

Любые советы, подсказки, полезные советы по рекомендации?

4b9b3361

Ответ 2

Я унаследован от DefaultModelBinder, потому что он автоматически связывает основные свойства в сущности. Я улучшил его, так что он связывает также свойства навигации. Сначала мое связующее выполняет наследование, а затем выполняет поиск дополнительных значений свойств навигации в форме. Я думаю, что ваш подход должен зависеть от того, что вы действительно хотите сделать. Вы также можете использовать отражатель и посмотреть, что действительно стоит за повязкой по умолчанию. Это может убедить вас наследовать.

Ответ 3

Трэвис Иллиг недавно написал действительно хорошую статью в блоге о проверке типа данных при создании настраиваемого связующего объекта.

Я никогда не видел этого совета раньше, и я думал, что это действительно хорошо, поэтому я хотел внести эту ссылку: http://www.paraesthesia.com/archive/2012/01/31/data-type-validation-and-model-binding-in-asp-net-mvc.aspx

Ответ 4

Здесь представлен один живой пример IModelBinder. В этом примере сложный Apache solr querystring была завернута для передачи простых объектов в Модель.

IModelBinder Внедрение

Controller

Ответ 5

MVC Futures 2 имеет расширяемую систему привязки модели. Вы можете узнать больше в документации по выпуску http://aspnet.codeplex.com/releases/view/41742

Просто скачайте "ASP.NET MVC 2 фьючерсы расширяемой модели Binder Documentation"