【发布时间】:2012-03-08 06:03:31
【问题描述】:
更新帖子以反映@Kate 建议的部分修复。原帖低于新帖:
我有对 HttpPost Action 方法的 Ajax 调用。如果该方法毫无例外地执行,我希望它将其数据作为部分视图加载到 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");
}
}
想法???
原帖
在 ASP MVC3 Web 应用程序中,我有一个 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 调用返回了一个错误,目前我只是弹出一个 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:");
}
});
【问题讨论】:
标签: ajax asp.net-mvc razor error-handling