c# - 如何在不在 MVC Controller 中抛出异常的情况下向 $.ajax 报告错误?

标签 c# ajax asp.net-mvc controller

我有一个 Controller 和一个定义的方法...

[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 连接错误),我们必须记录异常情况。
  2. 这些消息就像用户的验证消息,我们不想记录。
  3. 抛出异常也会淹没事件查看器。

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

更新

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

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

最佳答案

这就是 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.
}

这是 defined status codes 的列表.

关于c# - 如何在不在 MVC Controller 中抛出异常的情况下向 $.ajax 报告错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702103/

相关文章:

c# - 在 C# 中获取一个月的第 n 个工作日

c# - 当我需要向用户显示大量数据时,如何优化 RAM 使用?

php - ajax加载mysql数据到多个div

jquery - Telerik MVC 扩展日期选择器未将日期放入文本框中

c# - UTF8 在 Excel 中不起作用

c# - 在 asp.net MVC4 应用程序中使用 MVCMailer,在发送电子邮件时不断出现错误

c# - 面板 C# 中文本框的存在性检查问题 - Windows 窗体应用程序

c# - 用于字符串操作的正则表达式模式

ajax - 我需要使用 ajax 动态更改页面的一部分

javascript - XMLHttpRequest (Ajax) 错误