MVC i CRUD oparty na PartialView

0

Witam,

Mam w swojej aplikacji jeden widok wyświetlający listę danych obiektów i chciałbym do niego stworzyć CRUD'a, jednak nie takiego typowego że dla każdej funkcji osobny widok lecz aby podczas próby dodania nowego obiektu do listy wyświetlał się nad nią formularz do dodawania, gdy np przejdziemy w stan edycji jednego z obiektów to zamyka się formularz dodania a jeden z obiektów w liście ma uruchomione pola edycji (tak jak to działało w kontrolkach asp gdy obiekt przechodził w stan edycji), a gdy usunę obiekt to nad cala lista wyświetli się komunikat czy oby na pewno tego chcę.

Chciałem wszystko rozdzielić na poszczególne PartialView jednak moje różne kombinacje kończyły się na problemie który musiałbym brzydkim sposobem obejść, np walidacja po stronie klienta z która jest problem gdy JavaScript przestanie działać, albo jak przesłać stan aktualnego widoku tzn. informacja czy stan widoku jest w formacie edycji jakiegoś obiektu czy w stanie tworzenia nowego. Próbowałem ten stan zapisać w zmiennej static jednak gdy powracam z innej podstrony na ten widok to nie mam możliwości wyzerowania tego stanu.

Może jest jakiś sposób ładniejszy od szablonowego CRUD'a który ładnie pozwala operować bez przechodzenia przez różne widoki tak aby to działo się wszystko na jednym płótnie?

0

Bez JavaScriptu i tak tego nie zrobisz, kontrolki WebFormsowe przecież też go używały na potęgę.

Ja bym nie kombinował z dynamicznym wyświetlaniem PartialView, raczej napisałbym skrypty, które pokazują bądź ukrywają odpowiednie kontrolki edycyjne wraz z przyciskami, które wywołują ajaxowe żądania do kontrolera.

0

No ok wszystko fajnie tylko że moja aplikacja przewiduje możliwość wyłączenia JS i co wtedy? ;) Mam nadzieje że jest inny sposób niż rożne widoki dla rożnych opcji

0

Chcesz ukrywać i pokazywać poszczególne elementy strony bez użycia JavaScriptu? Chyba się da, ale będzie okropne dla użytkownika.
Skoro przewidujesz możliwość pracy bez JS, to lepiej zrobić oddzielne widoki dla każdej funkcji.

0

czyli nie ma sensu bawić się w żadne "if'y" i partiale aby je ukrywać? mam pomysł żeby do widoku przesyłać klasę która będzie reprezentować co ma siędziać w danym momencie oraz listę tych obiektów.
Co o tym sadzisz, to trochę mój pomysł na to rozwiązanie ale czy to będzie dobre?

 
public class TemplateCRUD
{
    public int id; { get; set; }
    public string status; { get; set; } //edit, create, delete, read
    public List<object> obiects { get; set; };
}
1

Nie mówię, że nie ma sensu. To po prostu nie będzie takie fajne i dynamiczne jak z JS. :)
Natomiast sam pomysł ze sterowaniem widocznością elementów na stronie przez status jest ok. (Chociaż ja bym to raczej nazwał trybem pracy, i zrobił do tego enum, a nie string.)

0

powiem szczerze dobry pomysł z tym enum jednak kombinuje na różne sposoby i nijak nie qiwm jak to zrobić mniej więcej rozumiem jak to działa jednak nie potrafie tego jakoś sensowni ewdrożyć, ja ty to widzisz?

1 użytkowników online, w tym zalogowanych: 0, gości: 1