>

키 값을 몰라도 modelState에서 모든 오류 메시지를 가져오고 싶습니다. ModelState에 포함 된 모든 오류 메시지를 가져 오기 위해 반복합니다.

어떻게하면 되나요?

  • 답변 # 1

    foreach (ModelState modelState in ViewData.ModelState.Values) {
        foreach (ModelError error in modelState.Errors) {
            DoSomethingWith(error);
        }
    }
    
    

    ASP.NET MVC에서 모델 상태 오류 모음을 얻는 방법도 참조하십시오.

  • 답변 # 2

    LINQ 사용 :

    IEnumerable<ModelError> allErrors = ModelState.Values.SelectMany(v => v.Errors);
    
    

  • 답변 # 3

    모든 오류 메시지를 하나의 문자열로 결합하려면 LINQ 버전을 기반으로합니다.

    string messages = string.Join("; ", ModelState.Values
                                            .SelectMany(x => x.Errors)
                                            .Select(x => x.ErrorMessage));
    
    

  • 답변 # 4

    작은 LINQ를 사용하여이 작업을 수행 할 수있었습니다.

    public static List<string> GetErrorListFromModelState
                                                  (ModelStateDictionary modelState)
    {
          var query = from state in modelState.Values
                      from error in state.Errors
                      select error.ErrorMessage;
          var errorList = query.ToList();
          return errorList;
    }
    
    

    위의 메소드는 유효성 검사 오류 목록을 반환합니다.

    추가 정보 :

    ASP.NET MVC에서 ModelState의 모든 오류를 읽는 방법

  • 답변 # 5

    디버깅 중에 모든 ModelState 오류를 표시하기 위해 각 페이지의 맨 아래에 테이블을 배치하는 것이 유용하다는 것을 알았습니다.

    <table class="model-state">
        @foreach (var item in ViewContext.ViewData.ModelState) 
        {
            if (item.Value.Errors.Any())
            { 
            <tr>
                <td><b>@item.Key</b></td>
                <td>@((item.Value == null || item.Value.Value == null) ? "<null>" : item.Value.Value.RawValue)</td>
                <td>@(string.Join("; ", item.Value.Errors.Select(x => x.ErrorMessage)))</td>
            </tr>
            }
        }
    </table>
    <style>
        table.model-state
        {
            border-color: #600;
            border-width: 0 0 1px 1px;
            border-style: solid;
            border-collapse: collapse;
            font-size: .8em;
            font-family: arial;
        }
        table.model-state td
        {
            border-color: #600;
            border-width: 1px 1px 0 0;
            border-style: solid;
            margin: 0;
            padding: .25em .75em;
            background-color: #FFC;
        }
     </style>
    
    

  • 이전 Jackcess의 Java SELECT @@ Identity
  • 다음 Numpy vs Matlab float에서 uint8 로의 변환