2015-04-27 9 views
8

To jest moja metoda działaniaco jest najlepsze praktyki do zwracania błędu w ASP.NET MVC

var model= db.PageData.FirstOrDefault(); 
if (model==null) 
{ 
    //return Error 
} 

reutrn View(model); 

Co to jest najlepsze praktyki dla powracających ten błąd? W przyjazny dla użytkownika sposób iw taki sposób, żebym mógł zidentyfikować ten błąd, gdy się pojawi.

+0

Chciałbym stworzyć stronę błędu i zadzwonić RedirectToAction ("MyError", "ErrorController") . Jestem pewien, że ktoś da bardzo głęboką odpowiedź. – Heberda

+2

Możliwy duplikat: http://stackoverflow.com/questions/10732644/best-practice-to-return-errors-in-asp-net-web-api –

Odpowiedz

1

Chciałbym utworzyć widok błąd, a następnie zrobić coś takiego, jeśli spodziewasz się błąd:

if(model == null) 
{ 
    ViewBag.Error = "Your x is not present, please try again later or contact xxx"; 
    return View("Error"); 
} 

Na widoku błędu a potem po prostu sprawdzić, czy ViewBag.Error jest obecny. (Widok błędu powinien być we wspólnych widokach).

Uwaga Zrobiłbym to tylko wtedy, gdy robisz wyjątek, a następnie możesz poinformować użytkowników, co zrobili źle. na przykład Edytując coś, możesz zwrócić im ten widok i dać im więcej informacji na temat tego, co zrobili źle.

-1
if(model == null) 
{ 
    TempData["Error"] = "Your x is not present, please try again later or contact 

    return View(); 
} 

na stronie cshtml możesz sprawdzić, czy dane tymczasowe zawierają "Wprowadzanie błędów", możesz wyświetlić szczegółowe informacje o użytkowniku.

@if (TempData["Error"] != null) 
{ 
    <div class="error"> 
    @TempData["Error"].ToString 
    </div> 
} 
+0

Nie użyłabym TempData w tym przykładzie, ponieważ tempdata jest połączona do sesji i można go łatwo zniszczyć. W przypadku małych wiadomości, ale jeśli musisz podać coś ważnego dla użytkownika, to po prostu F5 i już go nie ma. Ale myślę, że każdy ma swoje własne preferencje. –

+0

Tak, masz rację. Czas życia TempData jest bardzo krótki. Chcę pokazać prostą metodę przekazywania szczegółowych informacji na tę samą stronę – Jacek

1

obsługi w MVC

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Error(object sender, EventArgs e) 
    { 
     Exception exception = Server.GetLastError(); 
     Server.ClearError(); 
     Response.Redirect("/Home/Error"); 
    } 
} 

see here do błędu hadling w ASP.NET MVC Globalny Błąd

Powiązane problemy