向 Ajax.BeginForm 发送失败消息的正确方法是什么?

What is the right approach for send a failure to Ajax.BeginForm?

我开始使用 Ajax.BeginForm 并且我知道我可以调用控制器的 Action 并获得它的响应。 因此,如果用户尝试登录,我创建了一个 CheckLogin 操作,它需要用户的用户名和密码。 如果登录名和密码正确,我 return 一个 Json 将 Uri 重定向到我的电话,一切正常,但我不知道失败应该如何工作。 我应该抛出异常吗?我应该 return 一个错误的请求吗?

return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Invalid credentials");

哪种方法正确?

提前谢谢大家!

这取决于失败的类型...如果凭据无效,那么您应该 return 合适的 HTTP 状态,可能 "Bad Request" (400),或者 "Forbidden" (403),取决于您希望它如何工作。

如果代码真的崩溃了,那么它会导致异常...这会导致 HTTP 内部服务器错误 (500) 状态。这向客户表明了一个非常不同的场景。你应该只在发生意外错误时使用它。

一个预期的问题,例如无效的密码,应该会导致不同的状态被 returned 给客户一个问题性质的指示。 Bad Request 可能是正确的状态,但不同的人对此有不同的看法。没有硬性规定,只有指导。