mam metodę w kontroler, który wygląda tak:wygeneruje błąd z powrotem do jQuery z MVC HttpPost
[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);
}
}
I jak widać Próbowałem kilka różnych sposobów, aby rzucić ten błąd plecy. W JavaScript mam następujący blok do wywołania tej metody:
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);
};
Teraz to, co chcę zrobić, to pojawia się błąd, który występuje wyrzucane z powrotem do funkcji jqXHR.error
tak, że można go obsługiwać prawidłowo.
Obecnie kod, który jest odkomentowany, zgłasza wyjątek, mówiąc, że tekst, który umieszczam w Status
, jest niedozwolony, a kod komentarza faktycznie zwraca stronę błędu standardowego jako odpowiedź (co naprawdę nie jest zaskakujące).
Tak, mam kilka pytań:
- Jak mogę wyrzucić błąd prawidłowo?
- Co robi właściwość
Response.Status
?
Dzięki!
Odkąd generujesz wyjątek ogólny, nie wyślę konkretnej wiadomości do klienta. Może to być poufna informacja o Twojej aplikacji. Jeśli wychwycisz wyjątki w domenie niestandardowej, w których masz kontrolę nad wiadomością, możesz wysłać je do klienta, ale w przypadku ogólnego wyjątku powinieneś wysłać ogólną wiadomość. – BZink
@BZink, bardzo dobry punkt. Dziękuję Ci. –