ich eine Methode in einem Controller, die wie folgt aussieht:werfen einen Fehler aus einer MVC-Httppost zu jQuery zurück
[HttpPost]
public void UnfavoriteEvent(int id)
{
try
{
var rows = _connection.Execute("DELETE UserEvent WHERE UserID = (SELECT up.UserID FROM UserProfile up WHERE up.UserName = @UserName) AND EventID = @EventID",
new { EventID = id, UserName = User.Identity.Name });
if (rows != 1)
{
Response.StatusCode = 500;
Response.Status = "There was an unknown error updating the database.";
//throw new HttpException(500, "There was an unknown error updating the database.");
}
}
catch (Exception ex)
{
Response.StatusCode = 500;
Response.Status = ex.Message;
//throw new HttpException(500, ex.Message);
}
}
Und wie Sie habe ich versucht, diesen Fehler ein paar verschiedene Möglichkeiten sehen werfen zurück. Im JavaScript ich den folgenden Block haben diese Methode aufzurufen:
var jqXHR;
if (isFavorite) {
jqXHR = $.ajax({
type: 'POST',
url: '/Account/UnfavoriteEvent',
data: { id: $("#EventID").val() }
});
}
else {
jqXHR = $.ajax({
type: 'POST',
url: '/Account/FavoriteEvent',
data: { id: $("#EventID").val() }
});
}
jqXHR.error = function (data) {
$("#ajaxErrorMessage").val(data);
$("#ajaxError").toggle(2000);
};
Nun, was ich tun möchte, ist die Fehlermeldung zu erhalten, die zurück zur jqXHR.error
Funktion geworfen erfolgt so, dass ich es richtig verarbeiten kann.
Zur Zeit der Code, der unkommentiert ist löst eine Ausnahme zu sagen, dass der Text, den ich in Status
Platzierung bin nicht erlaubt ist, und der kommentierten Code gibt tatsächlich die Standard-Fehlerseite als Antwort (nicht wirklich überraschend).
Also habe ich ein paar Fragen:
- Wie werfe ich das richtig Fehler?
- Was macht die
Response.Status
Eigenschaft?
Vielen Dank!
Da Sie eine generische Ausnahme abfangen, würde ich die spezifische Nachricht nicht an den Client zurücksenden. Dies könnte zu vertraulichen Informationen über Ihre Anwendung führen. Wenn Sie benutzerdefinierte Domänenausnahmen abfangen, in denen Sie die Kontrolle über die Nachricht haben, können Sie sie an den Client senden, aber für die generische Ausnahme sollten Sie eine allgemeine Nachricht senden. – BZink
@BZink, sehr guter Punkt. Vielen Dank. –