小编典典

如何在不引发MVC控制器异常的情况下向$ .ajax报告错误?

ajax

我有一个控制器和一个定义的方法…

[HttpPost]
public ActionResult UpdateUser(UserInformation model){

   // Instead of throwing exception
   throw new InvalidOperationException("Something went wrong");


   // I need something like 
   return ExecutionError("Error Message");

   // which should be received as an error to my 
   // $.ajax at client side...

}

异常问题

  1. 如果发生设备或网络错误(例如SQL Connectivity错误),我们必须记录异常。
  2. 这些消息就像用户的验证消息,我们不想登录。
  3. 引发异常也会淹没事件查看器。

我需要一些简单的方法来向$ .ajax调用报告一些自定义的HTTP状态,以便它应在客户端导致错误,但是我不想抛出错误。

更新

我无法更改客户端脚本,因为它与其他数据源不一致。

到目前为止,HttpStatusCodeResult应该可以工作,但是是IIS引起了这里的问题。无论我设置了什么错误消息,都尝试了所有答案,但我仍然仅收到默认消息。


阅读 177

收藏
2020-07-26

共1个答案

小编典典

这是HTTP状态代码起作用的地方。使用Ajax,您将能够相应地处理它们。

[HttpPost]
public ActionResult UpdateUser(UserInformation model){
    if (!UserIsAuthorized())
        return new HttpStatusCodeResult(401, "Custom Error Message 1"); // Unauthorized
    if (!model.IsValid)
        return new HttpStatusCodeResult(400, "Custom Error Message 2"); // Bad Request
    // etc.
}

这是已定义状态代码的列表。

2020-07-26