gpt4 book ai didi

ajax - HttpPost上的ASP MVC3 HandleError

转载 作者:行者123 更新时间:2023-12-03 08:15:32 25 4
gpt4 key购买 nike

发布更新以反射(reflect)@Kate建议的部分修复。新帖子下方的原始帖子:

我有Ajax调用HttpPost Action方法。如果该方法无异常(exception)地执行,我希望它以div元素的部分 View 的形式加载其数据(此操作成功完成)。如果有异常,我希望它将asp mvc错误 View 作为完整页面 View 加载。但是,使用下面的代码,异常会导致错误 View 作为所述div元素的部分 View 加载。我一定不在我的 Controller 里...

[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]操作方法。该方法命中数据库并将数据返回到局部 View 。如果数据库或感兴趣的表已关闭,我想返回“错误” View 。但我似乎无法在方法上结合使用[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调用,当前我只是 pop 一个alert()。我可以对上述方法做一些事情来导致Error View 呈现吗?还是应该使用Ajax调用中返回的错误以某种方式呈现“错误” View ?

这是我的ajax调用:
$.ajax({
url: pathLoadUnmappedProjects,
type: 'POST',
dataType: 'html',
contentType: 'application/json; charset=utf-8',
success: function (result) {
$('#unmappedProjects').html(result);
},

error: function () {

alert("Error:");
}
});

最佳答案

问题出在您的代码中。因为引发了异常,它会自动停止进程并返回500 Error服务器(您可以在Firebug中查看“Net”选项卡以查看它)。所以,我的建议是不要在这里抛出异常:

throw new ArgumentException();

You can something like that:
try
{
...
}
catch (Exception e)
{
error = true;
}
if (error)
{
// render Error page
}

如果您需要重定向到某个页面,请尝试返回要重定向的页面名称,并按照JS代码中的说明进行操作,如下所示: How to reload page when an ajax request returns FormsAuthentication.RedirectToLoginPage?

因此,您的代码将如下所示:
error: function () {

window.location.href = "Error/Index";
}

在这种情况下,您可以像以前一样抛出异常,而ajax代码将捕获错误响应并进行重定向。

关于ajax - HttpPost上的ASP MVC3 HandleError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9318079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com