Перенаправление на страницу ошибки, если при частичном просмотре обнаружена ошибка - PullRequest
0 голосов
/ 02 июня 2011

Я визуализирую частичное представление внутри представления:

@{
    Html.RenderAction("PartialViewAction", "SomeController");
}  

Есть ли способ перенаправить пользователя на страницу с ошибкой, если в процессе частичного просмотра обнаружена ошибка?

РЕДАКТИРОВАТЬ: Я ищу вид перенаправления на стороне сервера. Это частичное представление не загружается с AJAX. Он отображается на стороне сервера в «большом» виде. «Большое» представление не имеет представления о том, что частичное представление было ошибочным.

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Возможно, я неправильно понимаю проблему, но не могли бы вы просто использовать метод Application_Error в global.asax, если вызов render выдает исключение? Смотрите здесь .

0 голосов
/ 02 июня 2011

В зависимости от вашей логики вы можете управлять потоком приложений, используя jQuery.ajax() для обработки ошибок.

// this will render the GET request on page load
$(function() {
    $.ajax({
        url: '/Some/PartialViewAction',
        type: 'GET',
        dataType: 'json',                            /*edit*/
        success: function(xhr_data) {                /*edit*/
            // the following assumes you wrap 
            // your partial view in div id="myDiv"
            $('#myDiv').html(xhr_data.html);         /*edit*/
            $('#myErrorDiv').html(xhr_data.error);   /*edit*/
        },
        error: function() {
            window.location.href='/Some/Error';
            // or similar page redirecting technique
        }
    });
});

Это обработает ошибку в GET, но, конечно, если бы вы возвращали какой-то JSON или какой-либо другой индикатор в вашем методе действия, вы могли бы использовать тот же window.location.href... в функции обратного вызова success.

Редактировать

Также см. Выше правки $.ajax

Ваш контроллер может сделать что-то вроде этого:

public ActionResult PartialViewAction() {
    // handle error
    string message = "Evacuate, Immediately!";
    // not certain the html will render correctly,
    // but you could encode/parse/whatever easily enough
    return Json(new { html = "<div>some html</div>", error = message },
        JsonRequestBehavior.AllowGet);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...