2

jQueryを使用してjavascriptからコントローラーアクションを呼び出すMVC4アプリケーションがあります。コントローラーで例外が発生した場合、返される応答テキストは HTML 形式です。JSON形式にしたい。これはどのように達成できますか?

私は、JSON フォーマッタが独自に魔法を実行する必要があると考えました...

JavaScript

// Call server to load web service methods
$.get("/Pws/LoadService/", data, function (result) {
    // Do stuff here
}, "json")
.error(function (error) { alert("error: " + JSON.stringify(error)) });

.Net コントローラ アクション

[HttpGet]
public JsonResult LoadService(string serviceEndpoint)
{
    // do stuff that throws exception

    return Json(serviceModel, JsonRequestBehavior.AllowGet);            
}
4

1 に答える 1

3

実際、エラー関数で追跡するエラーは、アプリケーションのエラーではなく、リクエストに関連しています。

だから私はJsonの結果にエラーの詳細を渡します。

try {
 //....
    return Json(new {hasError=false, data=serviceModel}, JsonRequestBehavior.AllowGet); 
}
catch(Exception e) {
    return Json(new {hasError=true, data=e.Message}, JsonRequestBehavior.AllowGet); 
}

クライアントでは、次のようなもので処理できます。

$.get("/Pws/LoadService/", data, function (result) {

    var resultData = result.d;
    if(resultData.hasError == true) {
      //Handle error as you have the error's message in resultData.data
    }
    else {
        //Process with the data in resultData.data
    }
}, "json") ...
于 2013-05-23T09:29:02.893 に答える