Лучшие практики при внедрении 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"