Действие контроллера MVC3 программно возвращает неудавшийся пост-запрос - PullRequest
1 голос
/ 31 января 2012

У меня есть форма Ajax, которая отправляет входные данные в контроллер.В настоящее время у меня есть результат действия, который возвращает представление, и у помощника формы ajax есть функция OnSuccess, которую он вызывает.

Что я хотел бы сделать, так это то, что если проверка, выполненная в контроллере, завершится неудачно, тоВозврат POST как сбой, поэтому я могу использовать атрибут OnFailure в помощнике AJAX, чтобы запустить другую функцию.Возможно ли это?

Кроме того, я бы предпочел не использовать привязку / проверку моделей таким образом, поскольку используемые мной модели сложны и не поддаются легкому связыванию.

1 Ответ

0 голосов
/ 31 января 2012

Насколько я помню (только возвращаясь к помощникам Ajax), OnFailure вызывается при ошибке HTTP Status, поэтому, если вы сделаете так, чтобы ваш просмотр вызывал один из них, должна быть вызвана функция OnFailure, возможно, что-то вроде следующегов действии (идет против идеи исключений как исключительных и использует неортодоксальный код состояния (конфликт), но вы получаете идею):

throw new HttpException(409, "Validation error");

Или, используя встроенный HttpStatusCodeResult:

return new HttpStatusCodeResult(409, "Validation error");

Или, если вам также необходимо вернуть какой-то фактический контент:

Response.StatusCode = 409;
Response.StatusDescription = "Validation error";
return WhateverResult();

Наконец, если вы часто используете опцию 3, вы можете создать новый ActionResult (или ViewResult) подкласс для обработки установки кода состояния и возврата результата.

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