Ich habe einen komplexen Typ, den ich zurückgeben, wenn ich verschiedene Operationen ausführen. Und ich möchte wissen, wie ich ein benutzerdefiniertes JSON-Objekt zurückgeben kann, um etwaige Fehler anzuzeigen. Betrachten Sie den folgenden CodeC# asp.net mvc benutzerdefinierte Fehlerbehandlung mit JSON
Business Layer
public ResultObject StartJob(string jobName){
...
return new ResultObject{ErrorMessage = "Job cannot be started due to ..."};
}
-Controller
[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);
}
}
Wenn ich die Ajax-Post durchführen, obwohl mir Erfolg Rückkehr = false, ist die Ajax-Aufruf immer noch erfolgreich und jQuery nicht nennen error() -Methode.
Dieser Mustertyp wird mehrmals wiederholt.
in diesem Fall den Wert der Erfolgsseite auf Client überprüfen und wenn der Wert falsch Ruf, was auch immer genannt worden wäre, in error() -Methode. 'if (data.success) {...} else {myerror (data.message);}' – Nkosi
Jquery betrachtet Ihr benutzerdefiniertes JSON-Objekt-Erfolgsflag nicht, um zu ermitteln, ob der Aufruf erfolgreich war oder nicht, stattdessen sieht es den http-Status aus Code zurückgegeben. In Ihrer Instanz wird eine 200 OK-Antwort zurückgegeben, daher wird der Fehlerhandler nicht aufgerufen. Wie bei @Nkosi erwähnt, können Sie das data.success-Flag im Erfolgs-Handler Ihres ajax-Ereignisses überprüfen. – Macilquham