2016-03-26 13 views
0

私はさまざまな操作を実行するときに返す複合型を持っています。カスタムJSONオブジェクトをどのように戻してエラーを表示できるか知りたいです。次のコードを考えてみましょうC#asp.net mvc JSONでのカスタムエラー処理

ビジネスレイヤ

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

= falseの場合、AJAX呼び出しは、まだ成功し

私は私が成功を返すにもかかわらず、Ajaxのポストを行う
[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); 
    } 
} 

でコントローラとjQueryを呼び出すことはありません。 error()メソッド。

このタイプのパターンは複数回繰り返されます。

+0

は、クライアント側での成功の値をチェックしに行く Ajaxの成功の内側にそれを処理したい場合、この値は、これまでで呼ばれていたであろうものを偽の呼び出しがあるときerror()メソッド。 – Nkosi

+0

Jqueryはカスタムjsonオブジェクトの成功フラグを調べて、呼び出しが成功したかどうかを判断します。代わりに、httpステータスが表示されます(例:コードが返されました。あなたのインスタンスでは、200 OK応答が返されるので、エラーハンドラは呼び出されません。 @Nkosiが述べたように、あなたのajaxイベントの成功ハンドラでdata.successフラグをチェックすることができます。 – Macilquham

答えて

1

ここでの「問題」は、ajax呼び出しが成功したことです。 JQueryは、ajax呼び出しが失敗した場合にのみ 'error()'メソッドを実行します。あなたは、クライアント側のコールバックに成功変数の値を読み、それが偽であるならば、呼び出し「エラー()」つまり、あなたがエラーイベントをトリガしたい場合は、スロー成功イベント を呼び出すために行く

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

私はそれをより簡単に処理できると思う。ありがとう –

0

その必要がありますその間のカスタム例外。 例外を処理しないと、エラースコープに入ります。

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

それとも、その場合には

success: function(data) { 

      if (!data.success) 
      { 
       error(); 
      } 
関連する問題