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();
}
Index | ErrorMessage |
0 | 파라미터에 문제가 발생했습니다. P1 |
1 | 파라미터에 문제가 발생했습니다. P2 |
2 | 파라미터에 문제가 발생했습니다. P3 |
'개발 > ASP.NET' 카테고리의 다른 글
Json내의 html태그의 이스케이프(Escape) 처리 (0) | 2019.01.25 |
---|---|
ASP.NET MVC : Ajax로 리스트 오브젝트를 Controller로 전달하기 (0) | 2019.01.24 |
ASP.NET MVC : ModelState의 에러 메세지 리스트를 취득해서 Json으로 반환시키기 (0) | 2019.01.24 |
C# 자동 구현 속성(auto-property) (0) | 2019.01.24 |
ASP.NET MVC : 모든 예외 처리를 일괄 관리하기 (0) | 2019.01.24 |
댓글