Сообщение обновлено, чтобы отразить частичное исправление, предлагаемое @Kate. Оригинальный пост ниже нового сообщения:ASP MVC3 HandleError на HttpPost
У меня есть вызов Ajax для метода действия HttpPost. Если метод выполняется без исключения, я хочу, чтобы он загружал свои данные в виде частичного представления в элементе div (он делает это успешно). Если есть исключение, я хочу, чтобы он загружал asp mvc Error view в виде полноэкранного просмотра. Однако, с приведенным ниже кодом, исключение вызывает представление Error для загрузки как частичного представления в указанном элементе div. Я должен оставить что-то из своего контроллера ...
[HttpPost]
[HandleError]
public ActionResult LoadUnmappedProjects()
{
bool error = false;
try
{
throw new ArgumentException();
}
catch (Exception e)
{
error = true;
}
if (!error)
using (var db = new prismEntities())
{
return PartialView(db.dmPSPProjectStatewideRegionals.ToList());
}
else
{
return View("Error");
}
}
Идеи ???
ОРИГИНАЛЬНЫЙ ПОСТ
В веб-приложение ASP MVC3, у меня есть АЯКС вызов метода и [HttpPost] действий. Метод удаляет базу данных и возвращает данные на частичный вид. Если база данных или таблица, представляющая интерес, не работает, я хотел бы вернуть представление Error. Но я не могу показаться, чтобы объединить [HttpPost] и [HandleError] о методе, чтобы осуществить это:
[HttpPost]
[HandleError]
public ActionResult LoadUnmappedProjects()
{
try
{
throw new ArgumentException();
}
catch (Exception e)
{
throw new CustomDbException(e);
}
using (var db = new prismEntities()){
return PartialView(db.dmPSPProjectStatewideRegionals.ToList());
}
}
Шток Error.cshtml не получает оказаны. Вместо этого, ошибка возвращается к вызову Ajax, и в настоящее время я просто выставляю предупреждение(). Есть ли что-то, что я могу сделать для метода выше, чтобы вызвать отображение ошибки? Или я должен использовать ошибку, возвращаемую в вызове Ajax, чтобы каким-то образом отобразить представление Error?
Вот мой Аякса вызов:
$.ajax({
url: pathLoadUnmappedProjects,
type: 'POST',
dataType: 'html',
contentType: 'application/json; charset=utf-8',
success: function (result) {
$('#unmappedProjects').html(result);
},
error: function() {
alert("Error:");
}
});
Спасибо, решена часть проблемы, но не все. Метод действия выполняется успешно, но возвратите Error View в виде частичного представления ... Я хочу отобразить его как целую страницу. Мне не хватает чего-то еще ... – rgwozdz
Укажите, как вы хотите отобразить эту страницу ошибок - как часть вашего запроса Ajax или хотите просто перенаправить на другую страницу. – Kath
См. Обновления в ответе. – Kath