Asp.net mvc 3 显示从mvc控制器到我的ajax调用的db异常?

Asp.net mvc 3 显示从mvc控制器到我的ajax调用的db异常?,asp.net-mvc-3,exception-handling,asp.net-ajax,Asp.net Mvc 3,Exception Handling,Asp.net Ajax,不确定bext方法是否可以向客户端显示异常,如db异常(ajax调用)?我是否应该在控制器下方放置一个try/catch?目前,我的ajax调用有一个通用的异常 控制器: // GET: Agency Grants public JsonResult GetAgencyGrants(int agencyID) { AuditDAL ad = new AuditDAL(); var grants = ad.GetAgencyGrants(agenc

不确定bext方法是否可以向客户端显示异常,如db异常(ajax调用)?我是否应该在控制器下方放置一个try/catch?目前,我的ajax调用有一个通用的异常

控制器:

// GET: Agency Grants 
    public JsonResult GetAgencyGrants(int agencyID)
    {
        AuditDAL ad = new AuditDAL();
        var grants = ad.GetAgencyGrants(agencyID); //exception here
        return this.Json(grants.ToList());
    } 
Ajax调用:

function GetAuditTypes(container) {
    $.ajax({
        url: '/AMS/Audit/GetAuditTypes',
        type: 'post',
        success: function (result) {
            $.each(result, function (i, item) {
                container.append($('<option/>').text(result[i].Audit_Type_Desc).attr('value', result[i].Audit_Type_ID));
            });
        },
        error: function (xhr, err) {
            alert("GetAuditTypes not returned: " + formatErrorMessage(xhr, err)); 
        }
    });
}

我不断收到内部服务器错误,而不是存储的进程丢失(真正的异常)。

ajax
error
回调函数处理
http
错误(但不是特定的服务器错误)。因此它不会显示专门的错误消息。请按如下方式更改代码:

  public JsonResult GetAgencyGrants(int agencyID)
    {
        AuditDAL ad = new AuditDAL();
        try
        {
           var grants = ad.GetAgencyGrants(agencyID); //exception here
           return this.Json(grants.ToList());
        }
        catch(Exception e){
            return this.Json(e.Message); 
        }             
    } 
并将您的javascript代码更改为:

$.ajax({
        url: '/AMS/Audit/GetAuditTypes',
        type: 'post',
        success: function (result) {
            if (result instanceof Array)
            {
            $.each(result, function (i, item) {
                container.append($('<option/>').text(result[i].Audit_Type_Desc).attr('value', result[i].Audit_Type_ID));
            });
             }
             else{
                // Exception Occurred 
                // do somethings with result(contains error message)
             }
        }           
    });
$.ajax({
url:“/AMS/Audit/GetAuditTypes”,
键入:“post”,
成功:功能(结果){
if(数组的结果实例)
{
$。每个(结果、功能(i、项目){
container.append($('').text(结果[i].Audit_Type_Desc).attr('value',结果[i].Audit_Type_ID));
});
}
否则{
//发生异常
//使用结果执行某些操作(包含错误消息)
}
}           
});
$.ajax({
        url: '/AMS/Audit/GetAuditTypes',
        type: 'post',
        success: function (result) {
            if (result instanceof Array)
            {
            $.each(result, function (i, item) {
                container.append($('<option/>').text(result[i].Audit_Type_Desc).attr('value', result[i].Audit_Type_ID));
            });
             }
             else{
                // Exception Occurred 
                // do somethings with result(contains error message)
             }
        }           
    });