Witam, chciałbym do widoku zwrócic dwie zmienne z kontrolera dokładnie są to zmienne do których są przypisane ilości danych rekordów z bazy za pomocą Linq.
Chciałbym się dowiedzieć jak mógłbym przekazać owe dwie zmienne do widoku i je odebrać żeby je wyświetlić. Czy możliwe jest napisania Linq w widoku z użyciem 'where' ? Proszę o podpowiedź.
jak to przekazanie po prostu liczby, to możesz użyć nawet ViewBaga
Albo stworzyć osobną klasę, w której umieścisz wszystkie dane potrzebne w danym widoku.
Tak, ViewBag temat zamkniety.
Viewbag to g**no i należy go unikać. Utwórz swój viewmodel.
użycie linq na widoku i przesyłanie przez viewbag to syf
Czy możecie wyjaśnić dlaczego ViewBag to "syf" i "g**no" ?
bo jak coś jest do wszystkiego to jest do niczego.
jest obiekt typu dynamic
, co owszem pozwala na wrzucenie tam tego co się chce, ale tym samym tracisz kontrolę nad tym co tam jest, Nie mając typowania kompilator nie jest w stanie Ci pomóc sprawdzając czy przekazujesz to co początkowo było założone.
Dodatkowo w widokach nie powinno być żadnej logiki. Zapytanie linq to już pewnego rodzaju logika. Zadaniem widoku jest otrzymać dane i je wyświetlić bez żadnego przetwarzania. Od tego są inne warstwy.
Praktykuję też takie podejście, że zawsze jak zakładam nowy projekt to pierwszą rzeczą którą robię jest usunięcie referencji do Microsoft.CSharp
, która odpowiada między innymi za dynamica. Wtedy nie kusi korzystanie z tego dzieła szatana.
Jeśli ktoś chce pisać w PHP, to niech pisze w PHP. Ale niech nikt nie pisze w C# tak jakby pisał w PHP, bo to nie ma sensu. C# jest statycznie typowany, a wstawianie tam dynamicznych kupek powoduje jedynie zamieszanie i frustrację ludzi poprawiających później taki kod.