在webApi控制器中实现Onfailure

时间:2015-06-08 22:32:44

标签: javascript c# ajax razor asp.net-web-api

我有一个Web Api,我有这个代码

                   @{
                    AjaxOptions addAjaxOpts = new AjaxOptions
                    {
                        // options will go here
                        OnSuccess = "getData", 
                        OnFailure="selectView('add')",
                        HttpMethod = "Post",
                        Url = "/api/AccountManage/CreateAccount"
                    };
                }

在控制器中:

[HttpPost]
        public void CreateAccount(CollaborateurModel item)
        {
        try{}
        catch{
             // return failure
             }
         }           

我需要实施failure part来执行OnFailure方法。

那么我该如何完成这项任务呢?

2 个答案:

答案 0 :(得分:1)

您可以先使用Json Result(MSDN ref.

开始

摘录示例:

[HttpPost]
public ActionResult CreateAccount(CollaborateurModel item)()
{
    try{
      //do operations that may fail
      var response = new { Success = true};
      return Json(response );
    }catch{
      var errorResponse= new { Success = false, ErrorMessage = "error"};
      return Json(errorResponse);
    }

}

然后在客户端使用JQuery调用控制器:

$(function () {
   $(".test-link").click(function (e) {
      $.post("controllerName/CreateAccount", function (data) {
        if (data.Success == true) {
           alert("Success");
         }
         else {alert(data.ErrorMessage);}
       });
       return false;
    }).fail(function() {
      alert( "error" );
     });
});

Jquery上的失败函数将处理客户端服务器可能遇到的通信问题。

有关JQuery的更多信息,您可以找到它here

答案 1 :(得分:0)

根据您所需的响应状态代码,您可以使用BadRequest,NotFound或InternalServerError结果类。其中每个都有一个构造函数,它有一个错误消息的可选参数。

[HttpPost]
public IHttpActionResult CreateAccount(CollaborateurModel item)
{
    try
    {
        // Do your thing
    }
    catch
    {
        // Return a HTTP 400 result
        return BadRequest("This is an error message");
    }
}