当我将Ajax.BeginForm发布到返回部分 View 的操作中时,我在ViewData项目中发送错误信息。
当前,为了处理所有错误,我必须将所有方法包装在try catch语句中。
[HttpPost, ValidateAntiForgeryToken]
public virtual ActionResult Save(int id, FormCollection form)
{
MyModel model;
try
{
...do stuff...
}
catch(Exception ex)
{
...log...
ViewData["ResultInfo"] = new ResultInfo(false, Resource.SAVE_NOT_SAVED, someErrorMessage);
}
return PartialView("Folder/SomeView", model);
}
我想使用自定义的HandleError属性来执行此操作,但我意识到必须等待很多陷阱。有没有人尝试过并想分享他们的经验?
编辑:
我最终在 Controller 基类中进行了错误处理。
该ErrorHandlingController有2种方法; RegisterErrorHandler和RegisterModel。如果在基类OnException中发现错误时发现错误处理程序已注册,我只需添加ResultInfo并将错误标记为已处理,并使用我在RegisterErrorHandler中设置的 View 和错误标题。
这样,就很容易将模型带到错误处理程序,并且自然可以直接使用资源,因为错误处理程序被注册为方法中的第一行,而不是方法外的属性。
最佳答案
我认为该问题的答案将对您有所帮助:How to handle model state errors in ajax-invoked controller action that returns a PartialView。
关于asp.net-mvc - 基于属性的Ajax请求错误处理? (值得吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894154/