ASP.NET MVC:ModelState에서 에러 메세지를 취득하기

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

Pie's Tech Note

생계형 개발자의 메모장

comments powered by Disqus

    rss facebook twitter github youtube mail spotify instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora