向 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 可能是正确的状态,但不同的人对此有不同的看法。没有硬性规定,只有指导。
我开始使用 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 可能是正确的状态,但不同的人对此有不同的看法。没有硬性规定,只有指导。