1

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 が発生した場合でもエラーは表示されません。ブラジル

4

1 に答える 1