如何从未与特定模型属性绑定的控制器返回错误

时间:2010-08-26 17:14:28

标签: asp.net validation exception asp.net-mvc-2

好奇最好的做法是将错误从控制器返回到视图,其中错误实际上不是验证错误,而是更像是“用户未找到”或“服务超时”类型的错误。 (在ASP.NET MVC2框架中)

我一直在将它们添加到ModelState的模型错误中,但这似乎不合适。 (虽然易于实施和维护)

示例 - 用户尝试登录,其凭据与已知用户不匹配。

2 个答案:

答案 0 :(得分:1)

我认为你需要对你称之为错误的内容稍微清楚一点。

应使用特定的异常处理程序处理异常(超时,数据库错误等)(尤其是因为您通常不希望向最终用户显示错误消息)。

在这种情况下,请查看控制器上的OnException()方法重载。 (或让所有控制器继承自公共ControllerBase,该方法重写该方法以避免重复)

您可能还希望在处理异常时检查filterContext.HttpContext.IsCustomErrorEnabled的值,以确定是否公开详细的异常信息或对其进行模糊处理。

请记住,例外情况应该是特殊情况 - “正常”操作不应该导致异常

您提到的其他类型的错误更像是“由于业务规则/无效输入而无法处理请求”(或类似),在这种情况下,向ViewModel添加错误消息似乎是合适的。它们可能不是直接验证错误,但它们很可能是用户输入的结果

答案 1 :(得分:0)

我刚研究过这个,我认为对于网络相关的错误等等,必然会发生,可以使用TempData(但不要将Exception放在内部,而只是放置异常消息,因为安全原因)。

http://forums.asp.net/p/1460169/3353779.aspx