2009-05-20 3 views
3

Я ищу оптимальный подход к тому, как выполнять проверку UI в архитектуре модели-представления-презентатора.Model-View-Presenter: Validate UI

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

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

Я думал об использовании BindingSource в презентаторе, поскольку он отражает изменения пользовательского интерфейса и отображается ведущему. Но я не уверен, что это правильный путь (и я думаю, что это отвратительно)?

К слову: валидация занимает не только место, прежде чем я напишу в базу данных; это уже происходит, когда пользователь работает над формами.

Может ли кто-нибудь подумать о хорошем способе этого?

ответ

2

Окончательно найдено решение. Это будет сделано, как я ожидал, используя DataSet в презентаторе, который обрабатывается различными классами валидатора (по одному для каждой из наших «страниц»). Самая сложная часть заключается в том, когда элементы управления зависят друг от друга (но в конце концов это просто проверка того, установлены ли значения в DataSet). В настоящее время невозможно выполнить переход к элементу управления, чтобы исправить ошибки, но это будет добавлено позже через Reflection, передав имя элемента управления LogEntries, и тогда представление сможет определить, где находится этот элемент управления.