FluentValidation пайдаланған кезде ViewModel қателерін домен үлгісін тексеру қателерін салыстыру

Адамдар мұнда қалай дұрыс жұмыс істеу керектігі туралы маған қандай да бір идея бере алады деп үміттенемін.

Қазір менің экранымды көрсету үшін пайдаланатын ViewModel бар. Көрініс үлгісі шын мәнінде бірнеше домен үлгілерінің жалпыланған деректерін қамтиды. ViewModel-ті негізгі валидацияны орындау үшін атрибуттармен безендірдім, бірақ нақты тексеру жұмысы қызмет көрсету қабатында болады. Мәселе қызмет деңгейінде тексеру қатесі болғанда пайда болады. Мүліктің аты (мысалы, - Пайдаланушы аты) ModelState ішіндегі жазбаға сәйкес келмейді (яғни, - ТіркеуМодемі.Сұны Name).

Мұны қалай істеуге болатынын ешкімде ұсыныс бар ма?

Алдын-ала рақмет!

Стивен

1

2 жауаптар

Мүмкін, сіздің сұрағыңызға жауап болмауы мүмкін, бірақ мен бұған әдетте мынаны жатқызамын:

Домендік модельде мен ешқандай растау шеңберін пайдаланбаймын және оны пайдаланушыға қате туралы қателесулер беру үшін пайдаланбаймын. Мен әрқашан модель жарамды күйде екенін тексеремін. Мен жарамсыз мән орнатылса (меншік белгілерінде) алып тастаймын. Домен объектілерінің конструкторларын әдеттегі мәндер мен конструктор параметрлерін пайдалану арқылы әрқашан жарамды күйде алу үшін қолданамын. Нағыз қарапайым, бірақ қуатты, себебі сіз әрқашан сіздің моделіңіз жарамды күйде екеніне сенімді бола аласыз. Сіз өзіңіздің доменіңіздің объектілерін мүлтіксіз тексеріңіз. Бұл тәсіл сондай-ақ ормалықтармен жақсы жұмыс істейді.

Сондықтан пайдаланушыға ыңғайлы хабарлар беру үшін тек қана қарап шығу модемінде дұрыс тексеруді қолданамын.

1
қосылды
Бұл тәсілмен проблема, бизнес-валидация логикасын (күрделі ережелерге қарапайым өріс түрі талап етілетін типті) UI-ге жеткізуге мәжбүрмін, сондықтан мен жақсы хабар ала аламын. Мен бұл жақсы көзқарас деп ойлаймын.
қосылды автор Steven, көзі

бұл ең үлкен шешім емес, бірақ түпнұсқалық өрістерді растауды көрсету үшін басты клиент тарапынан тексеруді қолдана отырып, бұл қызметке өткендіктен және қызметте жарамдылығын растау қорытындысында көрсетіледі.

0
қосылды