c# - 向 Ajax.BeginForm 发送失败的正确方法是什么?
问题描述
我开始使用 Ajax.BeginForm 并且我知道我可以调用控制器的 Action 并获得它的响应。因此,如果用户尝试登录,我创建了一个 CheckLogin Action,它需要用户的用户名和密码。如果登录名和密码正确,我会返回一个带有重定向 Uri 的 Json 到我的调用中,一切都很好,但我不知道失败应该如何工作。我应该抛出异常吗?我应该返回一个错误的请求吗?
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Invalid credentials");
哪一个是正确的方法?
提前谢谢各位!
解决方案
这取决于失败的类型......如果凭据无效,那么您应该返回合适的 HTTP 状态,可能是“错误请求”(400),或者可能是“禁止”(403),具体取决于您希望它如何工作。
如果代码确实崩溃了,那么它会导致异常......这将导致 HTTP 内部服务器错误 (500) 状态。这向客户表明了一个非常不同的场景。仅当发生意外错误时才应使用它。
预期的问题(例如无效的密码)应导致返回不同的状态,从而为客户提供问题性质的指示。Bad Request 可能是正确的状态,但不同的人对此有不同的看法。没有硬性规定,只有指导。
推荐阅读
- asp.net - 为什么 SharePoint 远程事件接收器为托管在 azure Web 应用程序中的 .SVC 引用错误的 URL
- javascript - 如果我将其模块传递给构造函数而不是要求它,如何创建一个类的实例?
- python - mypy 抱怨:带有 Type[TypeVar['T', str, date]] 和 T 输出的函数类型注释:不兼容的返回值类型(得到“str”,预期的“date”)
- javascript - 当我根据数组在这样的 URL (/student/:1) 中输入 ID 时如何显示,所有详细信息都想根据 ID 显示?
- python - 无法避免 Cython 在 Python2.7 而不是 Python3.x 中编译外部 C 模块
- php - 我如何在控制器功能中使用我的 html 标签
- javascript - 选中Vue中一个复选框上的所有复选框
- google-apps-script - Google 表格 - Json 到表格
- java - 如何在 java:invoke in mule 4 之后将 java 对象转换为 JSON
- python - conv2d 层有多少个参数