pie001.hatenablog.com
前回上記の記事でも軽く書いたが、エラーメッセージ取得部だけをキーによる取得方法も加えてまとめてみた。
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にある全てのエラーメッセージを取得
①SelectMany利用
var errormsgs = ViewData.ModelState.SelectMany(x => x.Value.Errors.Select(z => z.ErrorMessage)).ToList();
②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>();
if (param != null)
{
paramErrorList = param.Errors.Select(x=>x.ErrorMessage).ToList();
}
取得結果(List<string>の中身)
Index |
ErrorMessage |
0 |
パラメーターが正しくありません。P1 |
1 |
パラメーターが正しくありません。P2 |
2 |
パラメーターが正しくありません。P3 |