Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
22.11.2011, 12:52
|
|||
---|---|---|---|
|
|||
Silverlight Validator problem |
|||
#18+
Hi, All. После настойчивых обращений разъяренных пользователей на тему "почему я могу ввести пустую строку" в Silverlight 4 приложении, решил таки сделать "правильную" валидацию на формах ввода данных. Мудрые люди посоветовали воспользоваться DataAnnotations. Собственно, сделал в ViewModel: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Во View: Код: plaintext 1. 2. 3. 4. 5. 6.
Запускаю, смотрю - ввел пустое значение в Name, перешел на другой контрол - все шикарно, Name подсветился красным, появился хинт "Name is required.". Просто праздник какой-то. Но, думаю, надо ж как-то проверять не только при вводе в контрол, но и при сохранении данных (нажатии на кнопку Ok). Делаю (по-быстрому) в форме: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
А во ViewModel: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
PS. Надеюсь понятно объяснил, чего хочу :) Все-таки бессонные ночи оставляют свой неизгладимый след... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.11.2011, 16:04
|
|||
---|---|---|---|
Silverlight Validator problem |
|||
#18+
Alex MarmuzevichСобственно система то валидирует, но красивых рюшечек с подстветкой НЕТ! Вопрос, можно ли как-то красиво пнуть систему, чтобы она делала подстветку валидации не только при обновлении пропертей, но и про "внейшей" проверке? Пробежаться по всем свойствам зависимостей всех объектов в визуальном дереве. Каждому найденному биндингу сделать b.UpdateTarget(); b.UpdateSource(); . ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.11.2011, 17:38
|
|||
---|---|---|---|
|
|||
Silverlight Validator problem |
|||
#18+
Спасибо. Это я видел, но жутко не понравилось. Получилось по-другому. Перешел на INotifyDataErrorInfo + на Validate сделал Код: plaintext 1. 2. 3. 4. 5. 6.
Новый OKButton_Click (пока не убил): Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Работает, и рюшечки есть, и с биндингом особо не заморачиваюсь... Хотя как-то не сильно кошерно и без Validator'а. И не понятно, как можно было его заставить выполнить такую же проверку, но с "рюшечками" ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.11.2011, 17:42
|
|||
---|---|---|---|
Silverlight Validator problem |
|||
#18+
Alex MarmuzevichСпасибо. Это я видел, но жутко не понравилось. Получилось по-другому. Перешел на INotifyDataErrorInfo + на Validate сделалВалидация может быть прописана не только в модели, но и в представлении (Binding + ValidationRule). Как в этом случае будете? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.11.2011, 18:03
|
|||
---|---|---|---|
Silverlight Validator problem |
|||
#18+
Алексей КAlex MarmuzevichСпасибо. Это я видел, но жутко не понравилось. Получилось по-другому. Перешел на INotifyDataErrorInfo + на Validate сделалВалидация может быть прописана не только в модели, но и в представлении (Binding + ValidationRule). Как в этом случае будете? Никак. Нечего ей там делать ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.11.2011, 18:05
|
|||
---|---|---|---|
|
|||
Silverlight Validator problem |
|||
#18+
Алексей КAlex MarmuzevichСпасибо. Это я видел, но жутко не понравилось. Получилось по-другому. Перешел на INotifyDataErrorInfo + на Validate сделалВалидация может быть прописана не только в модели, но и в представлении (Binding + ValidationRule). Как в этом случае будете? Ну тут вариантов не останется, кроме как полазить по дереву и сделать UpdateTarget, UpdateSource. Но я уж постараюсь валидировать все-таки в модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
22.11.2011, 18:08
|
|||
---|---|---|---|
Silverlight Validator problem |
|||
#18+
SeVaНикак. Нечего ей там делатьПочему? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.11.2011, 11:27
|
|||
---|---|---|---|
Silverlight Validator problem |
|||
#18+
Алексей КSeVaНикак. Нечего ей там делатьПочему? влезу. так сказать. Леша, видимо совсем переработал. А если модель начать использовать, например вообще в другом приложении, то опять придётся лепить валидатор, а как же ооп? По 10 раз в разных местах, не айс. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.11.2011, 13:53
|
|||
---|---|---|---|
Silverlight Validator problem |
|||
#18+
ProgaА если модель начать использовать, например вообще в другом приложении, то опять придётся лепить валидатор, а как же ооп?А если нет? А если модель одна, а правила валидации разные? Это у кого как. Поэтому так категорично заявлять о ненужности валидации во View я бы не стал. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.11.2011, 13:59
|
|||
---|---|---|---|
Silverlight Validator problem |
|||
#18+
Алексей КА если модель одна, а правила валидации разные? это наверное всё-таки разные модели. Общего предка имеют - другое дело ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.11.2011, 14:48
|
|||
---|---|---|---|
Silverlight Validator problem |
|||
#18+
ИзопропилАлексей КА если модель одна, а правила валидации разные? это наверное всё-таки разные модели. Общего предка имеют - другое делоМожет быть. Да и дело даже не в этом. Классы модели кодосгенерированы. Ради бантиков первичной валидации на клиенте расширять их через partial или куда-то инкапсулировать откровенно говоря лень. Проще напихать валидаторов во view. Случаи, когда одна и та же модель редактируется ререз разные view крайне редки, если вообще встречаются. Поэтому ничего плохого в этом не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=21&mobile=1&tid=1442057]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 305ms |
total: | 414ms |
0 / 0 |