簡體   English   中英

如何從ModelState asp.net Web API身份獲取詳細錯誤

[英]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無效,則返回以下內容:

在此處輸入圖片說明

如何獲得此詳細錯誤? 我正在尋找一種從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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM