Лучшие практики при внедрении IModelBinder

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

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

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

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

Любые советы, хитрости, хорошие учебники порекомендовать?

5 ответов

Решение

К. Скотт Аллен дает несколько советов о привязке модели: http://odetocode.com/blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx.

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

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

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

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

Реализация IModelBinder

контроллер

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

Просто скачайте "Документация по связующему для расширяемой модели ASP.NET MVC 2"

Другие вопросы по тегам