在模式中加载局部视图时发生错误时重定向到错误页面

时间:2016-02-05 06:50:02

标签: javascript jquery asp.net-mvc

我想知道在弹出窗口加载局部视图时是否可能重定向到错误页面。我在API的部分视图中显示了一些数据。

我的js代码

@section Scripts {
    <script>
        $(document).ready(function () {

            $.ajaxSetup({ cache: false });

            $("a[data-modal]").on("click", function (e) {
                $('#myModalContent').load(this.href, function () {
                    $('#myModal').modal({
                        keyboard: true
                    }, 'show');
                });
                return false;
            });
        });

    </script>
}

现在它会在弹出窗口中显示错误页面。它应该被重定向到另一个页面。

修改

错误捕获的实现

Webconfig

<httpErrors errorMode="Custom" existingResponse="Replace">
   <remove statusCode="403" subStatusCode="-1" />
   <remove statusCode="404" subStatusCode="-1" />
   <remove statusCode="500" subStatusCode="-1" />
   <error statusCode="403" path="/Error/Index/403" responseMode="ExecuteURL"/>
   <error statusCode="404" path="/Error/Index/404" responseMode="ExecuteURL"/>
   <error statusCode="500" path="/Error/Index/500" responseMode="ExecuteURL"/>
</httpErrors>

错误控制器

  public ActionResult Index(int id = 500)
        {
            var model = new ErrorPageViewModel();
            model.ErrorCode = id;
            switch (id)
            {
                case 403:
                case 404:
                    model.ErrorHeader = "Page not Found!";
                    break;
                default:
                    model.ErrorHeader = "Oops, something went wrong!";
                    break;

            }

            return View(model);
        }

1 个答案:

答案 0 :(得分:0)

.load()函数回调可以使用其他参数,这些参数可以让您知道请求是否成功并采取相应的行动:

$('#myModalContent').load(this.href, function (response, status, xhr) {
    if (status == 'error') {
        // oops some error occurred => redirect the user to your error page
        window.location.href = '/error500';
    } else {
        $('#myModal').modal({
            keyboard: true
        }, 'show');
    }
});