0

コンパイルエラーのあるビューがあります。このビューは、ajax呼び出しを介してロードされます。コンパイルエラーメッセージを単純な文字列メッセージとして返したいのですが、MVCはHTMLページ全体をエラーとして返しています。

次のように、のエラーメッセージを検索するajaxエラーハンドラがありますrequest.responseText

$(document).ajaxError(function (event, request, settings) {
    ....
    //contains html error page, but I need a simple error message
    request.responseText 
    ....
});

ビューのコンパイルエラーが発生したときに、単純なエラーメッセージをajaxエラーハンドラーに返すにはどうすればよいですか?

4

1 に答える 1

2

Global.asaxにグローバル例外ハンドラーを記述して、AJAXリクエスト中に発生したエラーをインターセプトし、それらをJSONオブジェクトとしてレスポンスにシリアル化して、クライアントエラーコールバックが必要な情報を抽出できるようにします。

protected void Application_Error(object sender, EventArgs e)
{
    if (new HttpRequestWrapper(Request).IsAjaxRequest())
    {
        var exception = Server.GetLastError();
        Response.Clear();
        Server.ClearError();
        Response.ContentType = "application/json";
        var json = new JavaScriptSerializer().Serialize(new
        {
            // TODO: include the information about the error that
            // you are interested in => you could also test for 
            // different types of exceptions in order to retrieve some info
            message = exception.Message
        });
        Response.StatusCode = 500;
        Response.Write(json);
    }
}

その後:

$(document).ajaxError(function (event, request, settings) {
    try {
        var obj = $.parseJSON(request.responseText);
        alert(obj.message);
    } catch(e) { }
});
于 2012-08-20T15:51:29.137 に答える