【发布时间】:2017-01-16 16:09:36
【问题描述】:
我想知道从数据访问层(或其他层)向视图显示错误消息的最佳实践或最佳/优雅方式。
我正在使用 ASP.NET MVC 5,我的项目有多个层,例如:
- MyApp.Web
- MyApp.Business
- MyApp.Repository
- MyApp.DAL
我想向 IHM 提出两种类型的“错误消息”:
异常产生的错误:记录异常并显示人性化的错误消息。
业务错误:例如,某项操作需要客户至少有 3 张发票,而他只有 2 张。
在另一个项目中,这是我所做的:
控制器
[HttpPost]
public ActionResult Edit()
{
//...
ErrorModel errorModel = new ErrorModel();
BusinessLayer businessLayer = new businessLayer()
businessLayer.Edit( /* some parameters */, out errorModel)
TempData[Error] = errorModel
}
查看
@{
var errorModel = TempData[Error]
}
/* if error model is not null, display the error correctly */
在每一层中,我所有的方法都有一个out ErrorModel 变量,它被填充在try / catch 块中,或者因为业务失败,我绝对不喜欢这样。
我在Google 或 Stack Overflow 上找到了很多答案,但都集中在如何捕获错误上。
*我的问题更进一步:一旦被捕获,如何以优雅的方式将错误从发生的层带到视图?
【问题讨论】:
标签: asp.net-mvc error-handling architecture custom-error-handling