Відображення помилок перевірки моделі домену у ViewModel при використанні FluentValidation

Я сподіваюся, що люди тут можуть дати мені деякі ідеї про те, як правильно це зробити.

В даний час у мене є ViewModel, що я використовую для візуалізації мого екрану. Модель View фактично містить згладжені дані декількох моделей доменів. Я прикрашав ViewModel з атрибутами, щоб зробити основну перевірку, але реальна робота з перевірки відбувається на рівні обслуговування. Проблема виникає, коли існує помилка перевірки на рівні обслуговування. Ім'я властивості (тобто - UserName) не відповідає запису в ModelState (тобто - RegistrationViewModel.UserName).

Хто-небудь має рекомендації для того, як з цим впоратися?

Спасибі заздалегідь!

Стівен

1

2 Відповіді

Можливо, це не відповідь на ваше запитання, але я, як правило, підходимо до цього:

У моделі домену я не використовую жодну рамку перевірки, і я не використовую її для надання зручних повідомлень про помилки. Я завжди переконуюсь, що модель перебуває у дійсному стані. Я викидаю виняток, коли встановлено недійсне значення (в налаштуваннях властивостей). Я використовую конструкторів доменних об'єктів, щоб завжди отримувати їх у дійсному стані при створенні, використовуючи значення за замовчуванням і параметри конструктора. Дійсно простий, але потужний, тому що ви завжди можете бути впевнені, що ваша модель перебуває у дійсному стані. Ви повинні перевірити об'єкти домену, щоб бути абсолютно впевненими. Цей підхід також чудово працює з orm's.

Таким чином, я використовую тільки вільне підтвердження на viewmodel, щоб дати дружні повідомлення.

1
додано
Проблема з цим підходом полягає в тому, що я буду застряг, переносячи свою логіку ділової перевірки (складні правила проти простого поля обов'язковий тип) до інтерфейсу, щоб я міг отримати краще повідомлення. Я не вірю, що це хороший підхід.
додано Автор Steven, джерело

це не найкраще рішення, але в кінці кінців я покладаюся на мою основну перевірку на стороні клієнта, щоб показати основні перевірки поля, все, що минуло і підтверджене в службі, відображається в резюме перевірки.

0
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug