ASP.NET MVC中返回错误的最佳实践是什么?

8
这是我的操作方法。
var model= db.PageData.FirstOrDefault();
if (model==null)
{
    //return Error
}

reutrn View(model);

什么是返回错误的最佳实践?以用户友好的方式,并且在发生错误时能够确定此错误。

我会创建一个错误页面并调用RedirectToAction("MyError", "ErrorController")。不过我相信有人会给出非常深入的答案。 - Heberda
2
可能是重复问题:https://dev59.com/pGgv5IYBdhLWcg3wQ-kV - Der Kommissar
4个回答

6

1
我会创建一个错误视图,如果你期望出现错误,则可以执行以下操作:
if(model == null)
{
    ViewBag.Error = "Your x is not present, please try again later or contact xxx";
    return View("Error");
}

在您的错误视图中,只需检查是否存在ViewBag.Error即可。(错误视图应该在共享视图中)
请注意,只有在您期望出现错误时才这样做,然后您可以通知用户他们做错了什么。例如,编辑某些内容,您可以返回给他们此视图,并提供更多关于他们所犯错误的信息。

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");
    }
}

ASP.NET MVC中的错误处理,请在此处查看


-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>
}

在这个例子中,我不会使用TempData,因为TempData与会话相关联,很容易被销毁。对于小的消息可能没问题,但是如果你需要向用户提供任何重要信息,那么只需要按下F5,它就会消失了。但我猜每个人都有自己的偏好。 - Jamie Rees
是的,你说得对。TempData 的生命周期非常短。我想展示一种简单的方法来将详细信息传递到同一页。 - Jacek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接