Tôi có một phương pháp trong một bộ điều khiển trông giống như thế này:Ném một lỗi trở về jQuery từ một 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);
}
}
Và như bạn có thể thấy tôi đã thử một vài cách khác nhau để ném lỗi này trở lại. Trong JavaScript Tôi có khối sau để gọi phương pháp này:
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);
};
Bây giờ, những gì tôi muốn làm là nhận được lỗi đó xảy ra ném trở lại jqXHR.error
chức năng vì vậy mà tôi có thể xử lý nó đúng cách.
Hiện tại mã không được chú ý ném ngoại lệ cho biết văn bản tôi đang đặt trong Status
không được phép và mã nhận xét thực sự trả về trang lỗi chuẩn làm phản hồi (không thực sự đáng ngạc nhiên).
Vì vậy, tôi có một vài câu hỏi:
- Làm thế nào để vứt lỗi đúng cách?
- Thuộc tính
Response.Status
làm gì?
Cảm ơn tất cả mọi người!
Vì bạn đang bắt một ngoại lệ chung, tôi sẽ không gửi lại thông điệp cụ thể cho khách hàng. Điều này có thể kết thúc là thông tin nhạy cảm về ứng dụng của bạn. Nếu bạn nắm bắt các ngoại lệ tên miền tùy chỉnh nơi bạn kiểm soát thư bạn có thể gửi chúng cho khách hàng, nhưng đối với ngoại lệ chung, bạn nên gửi một thông báo chung. – BZink
@BZink, điểm rất tốt. Cảm ơn bạn. –