MVC3控制器操作以编程方式返回失败的发布请求

时间:2012-01-30 20:38:43

标签: javascript asp.net-mvc-3 post

我有一个Ajax表单,它将输入数据发送到控制器。我目前有一个返回视图的动作结果,而ajax表单助手有一个它调用的'OnSuccess'函数。

我想要做的是,如果在控制器中完成的验证失败,那么将POST返回为失败,这样我就可以使用AJAX助手中的OnFailure属性来启动另一个函数。这可能吗?

此外,我不希望以这种方式使用模型绑定/验证,因为我使用的模型很复杂,并且不易于绑定。

1 个答案:

答案 0 :(得分:0)

据我记得(只是回到Ajax帮助程序),OnFailure在HTTP状态错误上被调用,所以如果你让你的视图触发其中一个,那么应该调用OnFailure函数,可能类似于以下内容在行动中(违背异常的想法,并使用非正统的状态代码(冲突),但你明白了):

throw new HttpException(409, "Validation error");

或者,使用内置的HttpStatusCodeResult:

return new HttpStatusCodeResult(409, "Validation error");

或者,如果您还需要返回一些实际内容:

Response.StatusCode = 409;
Response.StatusDescription = "Validation error";
return WhateverResult();

最后,如果你经常使用选项3,你可以创建一个新的ActionResult (or ViewResult)子类来处理设置状态代码并返回结果。