在 asp.net mvc 中返回错误的最佳实践是啥
Posted
技术标签:
【中文标题】在 asp.net mvc 中返回错误的最佳实践是啥【英文标题】:what is the best practice for returning a error in asp.net mvc在 asp.net mvc 中返回错误的最佳实践是什么 【发布时间】:2015-07-05 22:29:45 【问题描述】:这是我的动作方法
var model= db.PageData.FirstOrDefault();
if (model==null)
//return Error
reutrn View(model);
返回此错误的最佳做法是什么?以一种用户友好的方式,并且在发生此错误时我可以识别它。
【问题讨论】:
我会创建一个错误页面并调用 RedirectToAction("MyError", "ErrorController")。我相信有人会给出一个非常深入的答案。 可能重复:***.com/questions/10732644/… 【参考方案1】:Throw a 500 Error:
return new HttpStatusCodeResult(500);
然后在您的 web.config 中处理 500 个错误。
http://benfoster.io/blog/aspnet-mvc-custom-error-pages
【讨论】:
【参考方案2】:我会创建一个错误视图,然后如果您预计会出现错误,请执行以下操作:
if(model == null)
ViewBag.Error = "Your x is not present, please try again later or contact xxx";
return View("Error");
在您的错误视图中,只需检查ViewBag.Error
是否存在。 (错误视图应该在共享视图中)。
请注意,我只会在您排除它发生时才这样做,然后您可以告知用户他们做错了什么。例如编辑某些内容,您可以将这个视图返回给他们,并为他们提供更多关于他们做错了什么的信息。
【讨论】:
【参考方案3】: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 即可。但我想每个人都有自己的喜好。 是的,你说得对。 TempData 的生命周期很短。我想展示将详细信息传递到同一页面的简单方法【参考方案4】: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 用于 asp.net mvc 中的错误处理
【讨论】:
以上是关于在 asp.net mvc 中返回错误的最佳实践是啥的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET MVC 中返回最大 Json 结果的最佳方法
在 ASP.NET MVC 中使用 Tempdata - 最佳实践
ASP.NET MVC 4,EF5,模型中的唯一属性 - 最佳实践?
asp.net mvc 开发人员的 javascript 最佳实践