发布更新以反映@Kate建议的部分修复。原文帖子在新帖子下方:HttpPost上的ASP MVC3 HandleError
我有Ajax调用HttpPost的Action方法。如果该方法毫无例外地执行,我希望它将数据作为div元素中的部分视图加载(成功完成此操作)。如果出现异常,我希望它以完整页面视图的形式加载asp mvc错误视图。但是,使用下面的代码,异常会导致错误视图在所述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");
}
}
想法?
ORIGINAL POST
在ASP MVC3 web应用程序,我要和[HttpPost]操作方法的AJAX调用。该方法命中数据库并将数据返回到局部视图。如果数据库或感兴趣的表已关闭,我想返回错误视图。但我似乎无法结合[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调用,而现在我只是弹出一个alert()。有什么我可以做的上面的方法导致错误视图呈现?或者我应该使用Ajax调用中返回的错误以某种方式呈现错误视图?
这里是我的Ajax调用:
$.ajax({
url: pathLoadUnmappedProjects,
type: 'POST',
dataType: 'html',
contentType: 'application/json; charset=utf-8',
success: function (result) {
$('#unmappedProjects').html(result);
},
error: function() {
alert("Error:");
}
});
谢谢,解决了问题的一部分,但不是全部。 Action方法执行成功,但将错误视图作为局部视图返回......我想将其作为整个页面呈现。我错过了其他的东西...... – rgwozdz 2012-02-17 00:03:06
请指定您想要如何呈现该错误页面 - 作为Ajax请求的一部分,或者您只想重定向到其他页面。 – Kath 2012-02-17 00:25:17
查看答案中的更新。 – Kath 2012-02-17 00:33:41