2015-04-27 3 views
8

Это мой метод действийчто лучшая практика для возвращения ошибки в ASP.NET MVC

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

reutrn View(model); 

Что является лучшей практикой для возвращения этой ошибки? В удобном для пользователя способом и таким образом, чтобы я мог идентифицировать эту ошибку, когда это происходит.

+0

Я бы создать страницу с ошибкой и вызвать RedirectToAction ("MyError", "ErrorController") , Я уверен, что кто-то даст очень подробный ответ. – Heberda

+2

Возможный дубликат: http://stackoverflow.com/questions/10732644/best-practice-to-return-errors-in-asp-net-web-api –

ответ

1

Я хотел бы создать представление об ошибке, а затем сделать что-то вроде этого, если вы ожидаете ошибку:

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

На ваш взгляд ошибки, то проверьте, если ViewBag.Error присутствует. (Просмотр ошибок должен быть в общих представлениях).

Примечание. Я бы сделал это только тогда, когда вы за исключением того, что это произойдет, и вы можете сообщить пользователям, что они сделали неправильно. например Редактируя что-то, вы можете вернуть им эту точку зрения и дать им дополнительную информацию о том, что они сделали неправильно.

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

    return View(); 
} 

на странице cshtml вы можете проверить, если данные содержат временные «ошибка ввода», вы можете отображать пользователю подробную информацию.

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

Я бы не использовал TempData в этом примере, поскольку tempdata связан к сеансу и может быть легко уничтожен. Для небольших сообщений возможно, но если вам нужно дать что-то важное для пользователя, тогда просто F5, и он исчез. Но я думаю, у каждого есть свои предпочтения. –

+0

Да, у вас есть право. Срок службы TempData очень короткий. Я хочу показать простой способ передать подробную информацию на ту же страницу – Jacek

1

Глобальная обработка в 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 для hadling ошибок в ASP.NET MVC Ошибка