• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Roździelenie kodu pomiędzy Model a Kontroler.

0 głosów
174 wizyt
pytanie zadane 31 października 2018 w C# i .NET przez Antero00 Gaduła (3,390 p.)
Witam,

Wykorzystując wzorzec MVC, zastanawiam się, w którym miejscu umieścić kod odpowiedzialny za odczyt danych z bazy.

Prosty przykład: mając formularz logowania umieściłem kod odpowiedzialny za sprawdzenie czy dany użytkownik jest zarejestrowany w modelu klasy o nazwie ( np. Login), zwracając true lub false do kontrolera chciałem przekierować do odpowiedniej akcji, albo ponowne wyświetlenie formularza albo dostęp do danych. Niestety w żaden sposób to nie działało. Pomogło umieszczenie instrukcji odczytu z bazy dopiero w bezpośrednio w kontrolerze.

I tu moje pytanie : jaki kod umieszczać w kontrolerze, a jaki w modelu ? jeśli ktoś ma jakieś fajne kursy pokazujące jak rozdzielić kod  chętnie poczytam.
1
komentarz 1 listopada 2018 przez NowyUrzydgownig Gaduła (3,610 p.)
W kontrolerze operujesz na żądaniach. Coś do kontrolera przychodzi, a ty co najwyżej obrabiasz dane, jakie dostałeś żeby można było je przekazać do kolejnej warstwy twojej aplikacji, która je obsłuży.

2 odpowiedzi

+2 głosów
odpowiedź 2 listopada 2018 przez pulson666 Stary wyjadacz (10,560 p.)
wybrane 9 listopada 2018 przez Antero00
 
Najlepsza
W skrócie powinno się zrobić to przez warstwę serwisów. Kontroler komunikuję się z serwisem przy pomocy wstrzykiwania zależności. A serwis bezpośrednio z bazą. Co za tym idzie kontroler nie ma dostępu do bazy przez co całą logikę musisz pisać w serwisach. Dlatego kontroler tylko wywołuje serwisy. 0 logiki biznesowej w kontrolerach.
komentarz 8 listopada 2018 przez Antero00 Gaduła (3,390 p.)
Czyli np. mam kontroler o nazwie Home, który zwraca listę dostępnych samochodów, które mają kolor niebieski. I mam rozumieć, że wywołuję w kontrolerze metodę GetBlueCar, zdefiniowaną w modelu, która zwraca listę samochodów ? ( pomijam na wczesnym etapie nauki warstwę serwisów)
2
komentarz 9 listopada 2018 przez NowyUrzydgownig Gaduła (3,610 p.)
za pomocą jakiegoś kontenera IoC przekazujesz interfejs jakiegoś serwisu, który ma w sobie metodę np. GetByColor(Color color). Wtedy w swoim kontrolerze w metodzie GetBlueCar wywolujesz carService.GetByColor(Color.Blue) i zwracasz wynik. Twój serwis to nic innego jak zwyczajna klasa C#. Masz bardzo dużo tutoriali w Internecie jak to działa. Często zamiast tworzyć repozytorium i serwis, dużo osób tworzy po prostu repozytorium, które działa tak jak serwis.
1
komentarz 9 listopada 2018 przez pulson666 Stary wyjadacz (10,560 p.)

@Antero00,

Wywołujesz w kontrolerze metodę która zawraca Ci listę Twojego modelu. Model to osobny byt który ma za zadanie prezentować tylko dane. Taki przykład z palca

 

public IActionResoult GetByCloro(string color){

 List<CarModel> model =  GetByColor(color);

}

 

private List<CarModel> GetByColor(string color){

return new List<CarModel>

}

----------------------------

I tutaj Twój model z danymi

public class CarModel(){

public int Id {get;set;}

public string Color {get;set;}

itp...

}

0 głosów
odpowiedź 8 listopada 2018 przez Antero00 Gaduła (3,390 p.)
Jeśli ktoś ma link do kursu w którym jest to fajnie opisane, komunikacja kontroler - service - model, to chętnie zobaczę.
1
komentarz 9 listopada 2018 przez NowyUrzydgownig Gaduła (3,610 p.)
Szukaj wzorców projektowych do Asp.Net. Sama komunikacja wynika ze wzorców jakie stosujesz.

Podobne pytania

0 głosów
2 odpowiedzi 114 wizyt
pytanie zadane 7 lutego w C# i .NET przez Antero00 Gaduła (3,390 p.)
0 głosów
1 odpowiedź 58 wizyt
0 głosów
1 odpowiedź 65 wizyt
pytanie zadane 11 listopada 2018 w C# i .NET przez Antero00 Gaduła (3,390 p.)
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

62,274 zapytań

108,398 odpowiedzi

226,279 komentarzy

34,841 pasjonatów

Przeglądających: 195
Pasjonatów: 3 Gości: 192

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...