我想知道向浏览器报告将显示给用户的应用程序或模型状态错误的最佳实践是什么。你能抛出一个异常并在jquery post的错误处理程序中处理它吗?例如,考虑以下方法:
[HandlerErrorWithAjaxFilter, HttpPost]
public ActionResult RetrievePassword(string email)
{
User user = _userRepository.GetByEmail(email);
if (user == null)
throw new ClientException("The email you entered does not exist in our system. Please enter the email address you used to sign up.");
string randomString = SecurityHelper.GenerateRandomString();
user.Password = SecurityHelper.GetMD5Bytes(randomString);
_userRepository.Save();
EmailHelper.SendPasswordByEmail(randomString);
if (Request.IsAjaxRequest())
return Json(new JsonAuth { Success = true, Message = "Your password was reset successfully. We've emailed you your new password.", ReturnUrl = "/Home/" });
else
return View();
}
在这种情况下,当用户为空时抛出异常是否正确?或者我应该这样做并在 jquery post 的成功处理程序中处理它:
return Json(new JsonAuth { Success = false, Message = "The email you entered does not exist in our system. Please enter the email address you used to sign up.", ReturnUrl = "/Home/" });
最佳答案
不要通过抛出异常来处理验证。如果您要发送 JSON 响应,请在 JSON 响应中包含客户端所需的所有内容:
return Json(new JsonAuth {
Success = false,
Message = "The email you entered does not exist in our system. Please enter the email address you used to sign up.",
ReturnUrl = "/Home/"
});
如果您要返回 View ,请添加模型状态错误,表单上的 HTML 帮助程序将完成剩下的工作:
ModelState.AddModelError("email", "The email you entered does not exist in our system. Please enter the email address you used to sign up.");
return View();
关于.net - 向客户报告模型状态和应用程序错误的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171684/