如何从 ModelState asp.net web api identity 获取详细错误
How to get detailed errors from ModelState asp.net web api identity
我有一个带有 asp.net web api 2 身份的注册表。
这是我的注册函数:
// POST api/Account/Register
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
try
{
...send email
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
return Ok();
}
如果 ModelState
无效 returns 像这样:
我怎样才能得到这个详细的错误?
我正在寻找一种从 ModelState 动态获取所有详细错误的方法。
当我收到回复时,我不确定是应该在 Web api 还是在 javascript 中进行。
我最终在我的 AccountController 上编写了以下函数。
它遍历 ModelState
上的错误,将它们添加到列表中,然后循环遍历列表并将它们添加到 ModelState
.
public void SetCustomError()
{
var errors = new List<string>();
foreach (var state in ModelState)
{
foreach (var error in state.Value.Errors)
{
errors.Add(error.ErrorMessage);
}
}
foreach (var error in errors)
{
ModelState.AddModelError("CustomError", error);
}
}
然后在我的 javascript 上我是这样处理的:
function showError(jqXHR) {
if (jqXHR) {
jsonValue = jQuery.parseJSON(jqXHR.responseText);
if (!jsonValue.modelState["customError"] == undefined) {
$("#error").text(jsonValue.modelState["customError"][0]);
}
else {
$("#error").text(jsonValue.modelState[""][0]);
}
$("#modalError").dialog();
}
}
我有一个带有 asp.net web api 2 身份的注册表。
这是我的注册函数:
// POST api/Account/Register
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
try
{
...send email
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
return Ok();
}
如果 ModelState
无效 returns 像这样:
我怎样才能得到这个详细的错误? 我正在寻找一种从 ModelState 动态获取所有详细错误的方法。 当我收到回复时,我不确定是应该在 Web api 还是在 javascript 中进行。
我最终在我的 AccountController 上编写了以下函数。
它遍历 ModelState
上的错误,将它们添加到列表中,然后循环遍历列表并将它们添加到 ModelState
.
public void SetCustomError()
{
var errors = new List<string>();
foreach (var state in ModelState)
{
foreach (var error in state.Value.Errors)
{
errors.Add(error.ErrorMessage);
}
}
foreach (var error in errors)
{
ModelState.AddModelError("CustomError", error);
}
}
然后在我的 javascript 上我是这样处理的:
function showError(jqXHR) {
if (jqXHR) {
jsonValue = jQuery.parseJSON(jqXHR.responseText);
if (!jsonValue.modelState["customError"] == undefined) {
$("#error").text(jsonValue.modelState["customError"][0]);
}
else {
$("#error").text(jsonValue.modelState[""][0]);
}
$("#modalError").dialog();
}
}