Attribute based error handling for ajax requests? (Is it worthwile?)
当我执行ajax.begininform操作时,返回一个部分视图,我会在一个viewdata项中发送错误信息。
当前,为了处理所有错误,我必须将所有方法包装在try catch语句中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [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); } |
我想用一个自定义的handleerrror属性来实现这一点,但是我意识到必须有很多gotchas等待被咬。是否有人试图分享他们的经历?
编辑:我最终在一个控制器类中进行了错误处理。
此错误处理控制器有2个方法:RegisterErrorHandler和RegisterModel。如果在基类OnException中发现错误时注册了错误处理程序,我只需添加resultinfo并将错误标记为已处理,并使用我在RegisterErrorHandler中设置的视图和错误标题。
这样,很容易将模型传递给错误处理程序,而且直接使用资源是很自然的,因为错误处理程序注册为方法内部的第一行,而不是方法外部的属性。
我认为这个问题的答案将帮助您:如何处理Ajax调用的控制器操作(返回partialView)中的模型状态错误。