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ę?
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ą.
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.
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.
@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?