Сообщение обновлено, чтобы отразить частичное исправление, предложенное @Kate.Оригинальный пост ниже нового поста:
У меня есть Ajax-вызов метода HttpPost Action.Если метод выполняется без исключения, я хочу, чтобы он загружал свои данные как частичное представление в элементе 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приложение, у меня есть вызов ajax и метод действия [HttpPost].Метод обращается к базе данных и возвращает данные в частичное представление.Если база данных или таблица интереса не работает, я хотел бы вернуться к представлению «Ошибка».Но я не могу объединить [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 возвращается ошибка, и в настоящее время я просто выдаю предупреждение ().Есть ли что-то, что я могу сделать с вышеописанным методом, чтобы вызвать представление Error для рендеринга?Или я должен использовать ошибку, возвращенную в вызове Ajax, чтобы каким-то образом отобразить представление Error?
Вот мой вызов ajax:
$.ajax({
url: pathLoadUnmappedProjects,
type: 'POST',
dataType: 'html',
contentType: 'application/json; charset=utf-8',
success: function (result) {
$('#unmappedProjects').html(result);
},
error: function () {
alert("Error:");
}
});