2012-03-22 1 views
4

У меня есть стандартный атрибут RequiredIf для некоторых условных валидаций.
Моя форма и модель довольно большие, модель имеет 63 свойства и большинство из них проверены.MVC3 Lazy Model Binding/Loading

Во всяком случае, у меня есть проблема, когда моя модель загружается в , а выполняется моя проверка.
Если я поставил точку останова в первой строке кода внутри метода RequiredIf IsValid, я вижу, что у моей модели много нулевых значений. Когда я нажимаю F5 (чтобы продолжить проверку следующего свойства), все еще много нулей. Если я нажимаю F5 примерно в 5 раз, модель волшебным образом заполняется данными, которые я опубликовал.

Мои первые 5-6 валидаций из-за этого закручиваются. Кто-нибудь знает что-то о том, как модели загружаются? Я не использую привязку пользовательской модели.

+0

Вы хотите загрузить все отношения с сущностью? Или эти свойства являются просто примитивными типами? –

+0

Все эти примитивные типы. Большинство загружаемых строк - это строки. – Peanut

ответ

3

Решение было полностью «переопределить» стандартную привязку модели. Создайте свое собственное связующее устройство, загрузите всю модель вручную, а затем выполните все проверки вашей модели. Я все еще убежден, что есть способ просто сказать «Эй, загрузите всю модель до проверки» в этой стандартной модели Binder, но я должен был сделать свой собственный пока.

1

Я бы пересмотрел вашу страницу и модель и разделил модель данных и просмотрел несколько небольших моделей, возможно, используя несколько частичных представлений. Таким образом, вы могли бы лучше управлять своей моделью. Представьте, что вы пишете тесты для этой модели. 63 свойств слишком много, и, вероятно, вам нужно обратиться к этому, иначе это звучит, когда вы столкнетесь с проблемами позже.

+0

Я не согласен с этим, но перепроектирование чужого кода на этапе проекта не является вариантом. :( – Peanut

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

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