【问题标题】:C# asp.net mvc custom error handling with JSONC# asp.net mvc 使用 JSON 自定义错误处理
【发布时间】:2016-03-26 13:04:54
【问题描述】:

我有一个复杂类型,当我执行各种操作时会返回它。我想知道如何传回自定义 JSON 对象以显示任何错误。考虑以下代码

业务层

public ResultObject StartJob(string jobName){ 
    ...
    return new ResultObject{ErrorMessage = "Job cannot be started due to ..."};
}

控制器

[HttpPost]
public ActionResult StartJob(string jobName){
    var resultObject = BusinessLayer.StartJob(jobName);

    if (resultObject.HasErrors){ 
       return Json(new {success = false, message = resultObject.message}, JsonRequestBehavior.AllowGet);  
    }
    else{
       return Json(new {success = true}, JsonRequestBeahvior.AllowGet);  
    }
}

当我执行 ajax 发布时,尽管我返回了 success = false,ajax 调用仍然成功并且 jQuery 没有调用 error() 方法。

这种类型的模式会重复多次。

【问题讨论】:

  • 在这种情况下,检查客户端的成功值,当值为 false 时,调用 error() 方法中会调用的内容。 if(data.success){...}else{ myerror(data.message);}
  • Jquery 不会查看您的自定义 json 对象成功标志来确定调用是否成功,而是查看返回的 http 状态代码。在您的实例中,将返回 200 OK 响应,因此不会调用错误处理程序。正如@Nkosi 提到的,您可以在 ajax 事件的成功处理程序中检查 data.success 标志。

标签: c# json asp.net-mvc


【解决方案1】:

这里的“问题”是 ajax 调用是成功的。 JQuery 只会在 ajax 调用失败时执行 'error()' 方法。您应该在客户端回调中读取成功变量的值,如果它为 false,则调用 'error()' 即

if (!data.success)
{
  error();
}

【讨论】:

  • 我想我会自己处理它,因为它会更容易。谢谢
【解决方案2】:

它将调用成功事件 如果要触发错误事件,则在两者之间抛出自定义异常。 保持异常未处理,它将进入错误范围。

error: function() {
                    .......
                    .......
                }

或者如果你想在 Ajax 中处理它成功 去吧

 success: function(data) {

            if (!data.success)
            {
              error();
            }

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2010-12-24
    • 2016-04-10
    • 2011-01-29
    • 2010-12-07
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多