Powiedzmy, że mam serwis, którego pewna metoda zwraca enuma. Metoda ta jest wywoływana w akcji kontrolera i na podstawie wyniku (enuma) kontroler generuje odpowiedź w postaci jakiegoś widoku. Czy takie zachowanie jest zgodne z zasadami MVC i dobrymi praktykami? Tylko jeden enum oznacza, że wszystko poszło OK. Chciałem pisać jakieś ExceptionHandlery do tych "złych" sytuacji, ale stwierdziłem, że to będzie overkill. Mam rację?
Serwis zwracający enum
- Rejestracja: dni
- Ostatnio: dni
- Postów: 35
Nie wiem, czy dobrze zrozumiałem. Masz na myśli coś takiego?
enum DoSomething { IsDisabled, UserCanceled, Success };
async Task<DoSomething> cosTam(object data) {
//Robi coś
return wynik_w_enum;
}
Bierzesz wynik i wyświetlasz komunikat na jego podstawie?
Moim zdaniem rozwiązanie ok o ile enum służy do tego konkretnego zadania, ewentualnie innych które go po całości wykorzystują.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gdańsk
- Postów: 647
Właśnie o to mi chodziło. Problem polega na tym, że w metodzie kontrolera będzie musiał znaleźć się jakiś switch-case, aby ten wynik obsłużyć, a to oznacza logikę w kontrolerze i sprzeczność z MVC.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
nobody01 napisał(a):
a to oznacza logikę w kontrolerze i sprzeczność z MVC.
W kontrolerach zgodnych z MVC ma nie być logiki aplikacyjnej i biznesowej, ale to jest jak najbardziej prawidłowe miejsce na logikę prezentacji.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gdańsk
- Postów: 647
@somekind: A przy okazji: ten problem pojawił się przy okazji refaktoringu AccountController dostarczonego wraz z Identity. Ten enum pochodzi właśnie z Identity. Czy w porządku jest mieć nadal referencję w projekcie Web do Identity, jeśli cała logika aplikacji/biznesowa związana z autentykacją została przeniesiona do Application?