Ajax.BeginForm (new AjaxOptions {}) Исключения - PullRequest
2 голосов
/ 27 марта 2012

Два варианта торчат.OnSuccess и OnFailure.Это позволяет мне вызывать функции, если обновление страницы прошло успешно или не удалосьИтак, у меня есть вызываемое действие, которое отправляет и отправляет электронную почту и имеет этот код ...

try
            {
                // Code to send email
                return Content("Your message has been successfully!", "text/html");
            }
            catch (Exception ex)
            {
                return Content("An error occurred sending your message...", "text/html");
            }

Проблема в том, что даже если он попадает в исключение, он все равно вызывает OnSuccess.Что я хочу сделать, это вызвать другую функцию, когда она попадает в исключение.Как бы я поступил так?

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

Обратный вызов OnFailure будет вызываться, когда код состояния HTTP, возвращаемый сервером, не равен 200. В вашем примере в обоих случаях это 200. Вы обнаружили исключение и проглотили его.

Итак:

catch (Exception ex)
{                
    Response.StatusCode = 500;
    return Content("An error occurred sending your message...", "text/html");
}

и затем:

function onFail(result) {
    alert(result.responseText);
};
0 голосов
/ 27 марта 2012

По сути, вы не устанавливаете статус ответа или сообщение об ошибке обратно клиенту.Кроме того, я понимаю, что вы получаете JSON, и это хорошая идея вернуть JSON.Также имейте в виду, что IIS может проглотить исключения, как показано в примере ниже, как показывает @Rob Stevenson-Leggett:

Response.TrySkipIisCustomErrors = true

Вот пример стекопотока из предыдущего вопроса: Как вернуть правильный ответ наошибка в ASP.NET MVC 3.0 через JSON?

, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...