Web サービスを呼び出し、Json の結果をビューに返す asp.net mvc Web アプリケーション内に次のアクション メソッドがあります。
public ActionResult ListPackages()
{
using (var client = new WebClient())
{
try{
var query = HttpUtility.ParseQueryString(string.Empty);
UriBuilder("http://localhost:8080/jw/web/json/workflow/package/list");
url.Query = query.ToString();
string json = client.DownloadString(url.ToString());
Thread.Sleep(500);
return Content(json, "application/json");
}
catch (System.Net.WebException ex) {
return Content("Error, service is down. please try again later", "application/json");
}
}
}
次に、ビューで次の Ajax.Actionlink を定義しました:-
@Ajax.ActionLink("Get Process List", "ListPackages", "Home",
new AjaxOptions
{
HttpMethod = "GET",
LoadingElementId = "tobehide",
OnSuccess = "getpackagelist"
})
および次の getpackagelist Java スクリプト:-
function getpackagelist(result) {
$('#products').empty();
$('#title').text("All Processes");
$.each(result.data, function (key, val) {
var str = val.packageName;
$('<li/>', { text: str }).appendTo($('#products'));
});
$('#tobehide').hide();
}
私が直面している問題は、Web サービスがダウンしていてSystem.Net.WebException
例外が発生した場合、" Error, service is down. please try again later "
maeeage がビューに表示されず、ajax の読み込みイメージの後に何も表示されないことです...
:::編集:::
スクリプトを次のように変更します:-
function getpackagelist(result) {
if (result.error == null) {
$('#products').empty();
$('#title').text("All Processes");
$.each(result.data, function (key, val) {
var str = val.packageName;
$('<li/>', { text: str })
.appendTo($('#products'));
});
$('#tobehide').hide();
}
else {
$('<li/>', { text: result.error })
.appendTo($('#products'));
}
そして、アクションメソッドは次のようになります:-
catch (System.Net.WebException) {
return new JsonResult()
{
Data = new { error = "Error, service is down. please try again later" }
};
ただし、WebExsception が発生した場合でもエラーは表示されません。ブラジル