2009-10-11 1 views
27

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

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

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

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

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

ответ

9

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

+0

В статье упоминается аннотаций данных, так что я задавался вопросом, должен ли я наследовать от DataAnnotationsModelBinder вместо. Ответ - нет. MVC 2 RTM DefaultModelBinder уже содержит логику из DataAnnotationsModelBinder. См. Http://stackoverflow.com/questions/2666955/dataannotationsmodelbinder-with-mvc2-rtm/2669207#2669207 –

2

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

0

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

Просто скачайте «ASP.NET MVC 2 Фьючерс Extensible Model Binder Документация»

2

Travis Illig недавно написал очень хорошую статью блога о проверке типа данных при создании пользовательских модель связующего.

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

1

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

IModelBinder Реализация

Controller