發佈更新以反映@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