我有一个Ajax表单,它将输入数据发送到控制器。我目前有一个返回视图的操作结果,ajax表单助手有一个它调用的"OnSuccess"函数。
我想做的是,如果在控制器中进行的验证失败,那么将POST作为失败返回,这样我就可以使用AJAX助手中的OnFailure属性来启动另一个函数。这可能吗?
此外,我不希望以这种方式使用模型绑定/验证,因为我使用的模型很复杂,不容易绑定。
据我所知(只是刚刚返回到Ajax助手),OnFailure是在HTTP状态错误时调用的,所以如果您使视图触发其中一个,则应该调用OnFailure函数,可能在操作中类似于以下内容(反对异常是异常的想法,并使用非正统的状态代码(Conflict),但你明白了):
throw new HttpException(409, "Validation error");
或者,使用内置的HttpStatusCodeResult:
return new HttpStatusCodeResult(409, "Validation error");
或者,如果您还需要返回一些实际内容:
Response.StatusCode = 409;
Response.StatusDescription = "Validation error";
return WhateverResult();
最后,如果您经常使用选项3,您可以创建一个新的ActionResult(或ViewResult)子类来处理状态代码的设置和返回结果。