3

Я читал MVC 3 source code, пытаясь понять, какую семантику я должен придерживаться, если я переопределяю DefaultModelBinder.BindModel() или даже реализую IModelBinder.BindModel().Что должна сделать реализация BindModel()?

Непонятно, какое «состояние» BindModel() должно оставить другие объекты, как только это будет сделано с его работой. Уверен, что он должен вернуть значение, представляющее некоторую интерпретацию данных ValueProvider, но какие побочные эффекты он должен иметь? Например:

  • Имеет ли MVC ожидания относительно состояния привязкиКонтекст передается в BindModel() * после того, как * закончен?
  • Что, если что-нибудь, должен установить IModelBinder.BindModel() в ModelMetadata? (DefaultModelBinder устанавливает метаданные свойств в свой метод BindProperty(), вызываемый BindModel().)
  • Если переопределение вызова DefaultModelBinder.BindModel() ModelState.AddModelError() или BindProperty() переопределяет более подходящее место (особенно если я хочу как можно больше использовать поведение DefaultModelBinder по умолчанию)?

DefaultModelBinder имеет так много семантики встроенной в его слесарном, что делает переопределение ничего, что чувствует очень опасно (то есть я чувствую, что я ничего не могу отменить, не нарушая Liskov principle). Отсутствие документации не помогает.

ответ

0

Если вам нужно настраивать привязку, я бы использовал интерфейс IModelBinder и делал все, что необходимо для создания вашего объекта.

 Смежные вопросы

  • Нет связанных вопросов^_^