How to get Model errors in AjaxSubmit?
我正在使用AjaxSubmit发布表单,并且有使用XVal(RuleException方法)完成的服务器端验证。我没有使用Try/Catch方法向模型添加错误,然后发送到视图。相反-我想使用handleError属性,在OnException中,我将向模型添加错误。主要的问题是如何在Ajax调用中得到这些错误?
目前还没有一个内置的解决方案。正确地执行此操作需要客户端验证框架(因为要显示错误,需要动态更改HTML页),而且直到最近,ASP.NET MVC还没有这样做。然而,ASP.NET MVC 2 Preview 2引入了客户端验证,因此可以合理地假定框架中很快会有一些东西被构建。
然而,与此同时,handleerrrorattribute对您没有帮助。handleErrorAttribute只知道如何重定向到错误页,这通常不是您在响应服务器端验证错误时要做的事情,即使是在"普通"日志中,也不是在Ajax日志中。
您需要处理两种不同的场景:
要处理第一个错误场景,您需要将模型状态包装成一个对象,该对象将在JavaScript代码中可分析;JSON显然适合这里。然后,您需要在客户端使用JavaScript代码来解析这个对象并标记表单字段。如果您连接到一个现有的客户端验证框架,这个框架已经包含用于标记表单字段的代码,那么这就更容易了。
要处理第二类错误,可以扩展handleErrorAttribute,以便在发生灾难性故障时提供JSON而不是HTML。同样,您需要编写在发生故障时执行的javascript代码——jquery的全局
如果所有这些听起来都有点牵扯进来,那么,这就是为什么等待和查看MVC 2最终发布时将内置什么更有意义的原因。