ASP.NET MVC:ModelState에서 에러 메세지를 취득하기
ASP.NET MVC:ModelState의 에러 메세지 리스트를 취득해서 Json으로 반환
위 기사에서도 가볍게 다뤘지만 에러 메세지를 키를 이용해서 취득하는 방법을 추가로 정리해 보았습니다.
0. 아래의 내용처럼 ModelState에 에러를 선언하고 에러 메세지(string 리스트)를 취득
ModelState.AddModelError("Parameter", "파라미터에 문제가 발생했습니다. P1");
ModelState.AddModelError("Parameter", "파라미터에 문제가 발생했습니다. P2");
ModelState.AddModelError("Parameter", "파라미터에 문제가 발생했습니다. P3");
ModelState.AddModelError(string.Empty, "파라미터에 문제가 발생했습니다. 1");
ModelState.AddModelError(string.Empty, "파라미터에 문제가 발생했습니다. 2");
ModelState.AddModelError(string.Empty, "파라미터에 문제가 발생했습니다. 3");
1. ModelState에 있는 모든 에러메세지를 취득
1-1. SelectMany 이용
var errormsgs = ViewData.ModelState.SelectMany(x => x.Value.Errors.Select(z => z.ErrorMessage)).ToList();
1-2. foreach 이용
var allErrorList = new List<string>();
foreach (ModelState modelState in ViewData.ModelState.Values)
{
foreach (ModelError error in modelState.Errors)
{
allErrorList.Add(error.ErrorMessage);
}
}
취득 결과(List<string>의 내용)
Index | ErrorMessage |
---|---|
0 | 파라미터에 문제가 발생했습니다. P1 |
1 | 파라미터에 문제가 발생했습니다. P2 |
2 | 파라미터에 문제가 발생했습니다. P3 |
3 | 파라미터에 문제가 발생했습니다. 1 |
4 | 파라미터에 문제가 발생했습니다. 2 |
5 | 파라미터에 문제가 발생했습니다. 3 |
2. ModelState에 있는 특정 키의 에러 메세지만 취득
var param = ViewData.ModelState["Parameter"];
var paramErrorList = new List<string>();
// ViewData.ModelState[key]에 존재하지 않는 키를 지정한 경우엔 null을 반환
if (param != null)
{
paramErrorList = param.Errors.Select(x=>x.ErrorMessage).ToList();
}
취득 결과(List<string>의 내용)
Index | ErrorMessage |
---|---|
0 | 파라미터에 문제가 발생했습니다. P1 |
1 | 파라미터에 문제가 발생했습니다. P2 |
2 | 파라미터에 문제가 발생했습니다. P3 |