2015-04-27 8 views
8

Questo è il mio metodo d'azionequal è la migliore pratica per la restituzione di un errore in asp.net mvc

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

reutrn View(model); 

Qual è la migliore pratica per la restituzione questo errore? In un modo userfriendly e in un modo che potrei identificare questo errore quando si verifica.

+0

mi piacerebbe creare una pagina di errore e chiamare RedirectToAction ("MyError", "ErrorController") . Sono sicuro che qualcuno darà una risposta molto approfondita. – Heberda

+2

Possibile duplicato: http://stackoverflow.com/questions/10732644/best-practice-to-return-errors-in-asp-net-web-api –

risposta

1

vorrei creare una vista errore e poi fare qualcosa di simile se vi aspettate un errore:

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

Sul vista errore poi basta controllare se ViewBag.Error è presente. (La visualizzazione degli errori dovrebbe essere nelle viste condivise).

Nota Lo farei solo quando si sta verificando che ciò accada e quindi si possono informare gli utenti di ciò che hanno fatto di sbagliato. per esempio. Modificando qualcosa, potresti restituirgli questa vista e dare loro ulteriori informazioni su ciò che hanno fatto di sbagliato.

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

    return View(); 
} 

nella pagina cshtml è possibile verificare se i dati temporanei contengono "Errore di immissione", è possibile visualizzare le informazioni dettagliate dell'utente.

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

Non avrei usato TempData in questo esempio, poiché tempdata è collegato alla sessione e può essere facilmente distrutto. Forse per piccoli messaggi, ma se devi dare qualcosa di importante all'utente, basta semplicemente F5 e non c'è più. Ma immagino che tutti abbiano le loro preferenze. –

+0

Sì, hai ragione. La durata della vita di TempData è molto breve. Voglio mostrare un metodo semplice per passare informazioni dettagliate alla stessa pagina – Jacek

1

globale manipolazione in 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 per hadling errore in asp.net mvc errore