首页 > 解决方案 > 向 Ajax.BeginForm 发送失败的正确方法是什么?

问题描述

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

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

哪一个是正确的方法?

提前谢谢各位!

标签: c#asp.net-mvcajax.beginformjsonresult

解决方案


这取决于失败的类型......如果凭据无效,那么您应该返回合适的 HTTP 状态,可能是“错误请求”(400),或者可能是“禁止”(403),具体取决于您希望它如何工作。

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

预期的问题(例如无效的密码)应导致返回不同的状态,从而为客户提供问题性质的指示。Bad Request 可能是正确的状态,但不同的人对此有不同的看法。没有硬性规定,只有指导。


推荐阅读