Web API: получить недействительные поля из модели

Есть ли способ связать ошибку с Modelstate.Values с неверными полями из модели?

У меня есть что-то вроде

foreach (var error in this.ModelState.Values)
{
    Console.WriteLine(error.Errors);
}

Но этот код возвращает только ошибки.

2 ответа

Вы можете получить как сообщения об ошибках, так и связанные с ними параметры из ModelState и сохранить их в парах ключ-значение:

var Errors = ModelState.Keys.Where(i => ModelState[i].Errors.Count > 0)
.Select(k => new KeyValuePair<string, string>(k, ModelState[k].Errors.First().ErrorMessage));

Этот запрос Linq сначала проверяет и выбирает только те параметры, в которых есть ошибки, и из этих параметров мы хотим выбрать и имя параметра, и соответствующее сообщение об ошибке, которое мы храним в парах ключ-значение.

ModelState - это просто словарь с парами ключ и значение. Итак, если вы хотите получить свойство и связанные с ним ошибки, вы будете делать:

foreach (var modelError in ModelState)
{
    string propertyName = modelError.Key;
    if (modelError.Value.Errors.Count > 0)
    {
        //...
    }
}

Тебе стоит попробовать:

error.Errors.SelectMany (x => x.ErrorMessage)

в случае, если вам нужно получить сообщения об ошибках. (Вам понадобится ссылка на System.Linq)

Другие вопросы по тегам