1. ホーム
  2. c#

[解決済み] ASP.NET MVC ModelStateのエラーをjsonに変換する方法

2022-06-17 03:50:43

質問

すべてのModelStateエラーメッセージのリストを取得するにはどうすればよいですか? 私はすべてのキーを取得するために、このコードを見つけました。 ( ModelStateエラーのあるキーのリストを返す )

var errorKeys = (from item in ModelState
        where item.Value.Errors.Any() 
        select item.Key).ToList();

しかし、エラーメッセージをIListやIQueryableとして取得するにはどうしたらよいでしょうか?

行けますね。

foreach (var key in errorKeys)
{
    string msg = ModelState[error].Errors[0].ErrorMessage;
    errorList.Add(msg);
}

しかし、これは手動で行っていることです。きっとLINQを使って行う方法があるのでしょう?.ErrorMessageプロパティはチェーンのはるか下にあるので、LINQをどのように書けばいいのかわかりません......。

どのように解決するのですか?

あなたは 何でも の中に好きなものを入れてください。 select 節の中にある。

var errorList = (from item in ModelState
        where item.Value.Errors.Any() 
        select item.Value.Errors[0].ErrorMessage).ToList();

エディテージ : 複数のエラーを別々のリスト項目に抽出するために from 節を、このようにします。

var errorList = (from item in ModelState.Values
        from error in item.Errors
        select error.ErrorMessage).ToList();

あるいは

var errorList = ModelState.Values.SelectMany(m => m.Errors)
                                 .Select(e => e.ErrorMessage)
                                 .ToList();

2 nd エディテージ : を探しているのでしょう。 Dictionary<string, string[]> :

var errorList = ModelState.ToDictionary(
    kvp => kvp.Key,
    kvp => kvp.Value.Errors.Select(e => e.ErrorMessage).ToArray()
);