2011-02-02 12 views
5

Obecnie mam tę funkcję kontrolera:Najlepsza praktyka przy próbie edycji elementu, który nie istnieje?

public ViewResult Edit(int id) 
{ 
    //get user from id 
    var user = _adminRepository.GetUser(id); 

    return View(user); 
} 

to obecnie daje mi błąd na mojej stronie widoku jeśli próbuję edytować element o identyfikatorze 100, gdy nie ma użytkownika o identyfikatorze 100 w baza danych.

Jaka jest najlepsza metoda postępowania z tym problemem? Wysłać je na stronę Utwórz lub pokazać przyjazny komunikat o błędzie? Czy ta funkcja przekierowania powinna należeć do funkcji kontrolera?

Odpowiedz

5

Wyświetlę przyjazny komunikat o błędzie informujący, że użytkownik został usunięty i poda link do strony Utwórz użytkownika, jeśli chce ponownie utworzyć użytkownika.

Jestem przeciwny przekierowaniu użytkownika w miejscu, do którego pierwotnie nie miał on zamiaru się udać, więc automatycznie przekierowuję go na ekran Utwórz użytkownika, gdy oczekuje się przejścia do ekranu Edytuj użytkownika (zakładam, że są oddzielni) nie jest najbardziej przyjaznym dla użytkownika rozwiązaniem.

+0

Uzgodnione - o wiele bardziej pomocne niż 404! – IrishChieftain

1

Myślę, że powinieneś przekierować je do strony Utwórz z dodatkowymi informacjami, dlaczego są przekierowywane.

6

IMO powinien wywołać błąd 404. Po tym wszystkim użytkownik żąda zasobu, który nie istnieje, podobnie jak zwykła strona internetowa.

+0

Uzgodnione. Nic na stronie nie powinno * linkować do tej strony * (ponieważ nie istnieje), dlatego jedynym sposobem na uzyskanie tutaj jest instrukcja. Powinien być 404. – RPM1984

+0

@ RPM1984 - Chodzi o to, że mam siatkę użytkowników, każdy z przyciskiem Edycja. Wystąpiły problemy, w których użytkownik został usunięty przez kogoś, a następnie ktoś kliknął przycisk Edytuj na stronie siatki, którą miał otwartą przez jakiś czas, powodując błąd. – Steven

+0

@Steven: W takim przypadku należy rozważyć okresowe aktualizowanie siatki po stronie klienta, aby całkowicie uniknąć problemu. Korzeń wszelkiego zła tutaj wydaje się przestarzałą siatką. –

1

Na podstawie Twojej odpowiedzi na @ RPM1984, myślę, że Twój problem dotyczy akcji aktualizacji, ponieważ masz już otwarty widok. sugeruję, abyś przekierował na przyjazną stronę błędu mówiąc "Użytkownik, który próbujesz zaktualizować, nie istnieje." po kliknięciu Zapisz, a następnie dowiedzieć się, że użytkownik już tam nie jest. Za pomocą linku, aby wrócić do siatki i zobaczyć najnowszy zestaw użytkowników.

Ta strona będzie również pomocny dla niektórych użytkowników może próbować uzyskać dostęp do adresu URL bezpośrednio, zamiast korzystania z siatki ..

tj

niektóre mogą wpisać

http://mysite.com/users/edit/215215132

gdzie 215215132 jest twoim ID użytkownika.

Po prostu zakładam, że tak to robisz.

Powiązane problemy