我的Linq-fu不足以将以下内容翻译成一两行。
var errors = new List<string>();
foreach (var key in ModelState.Keys)
{
errors.Add(ModelState[key].Errors.FirstOrDefault().ErrorMessage);
}
return Json(new { success = false, errors = errors });
答案 0 :(得分:3)
关闭转换(因为FirstOrDefault()可能返回null而不安全,因为你的代码会引发空引用异常):
return Json(new { success = false,
errors = ModelState.Values
.Select(ms => ms.Errors.FirstOrDefault().ErrorMessage)
.ToList() });
您可以使用以下方式使其更安全:
return Json(new {
success = false,
errors =
ModelState.Values
.Select(ms =>
{
var error = ms.Errors.FirstOrDefault();
return error == null ? error.ErrorMessage : "";
})
.ToList() });
答案 1 :(得分:3)
确切的翻译将是:
var errors = ModelState.Keys.Select(k => ModelState[k].Errors.First().ErrorMessage);
return Json(new { success = false, errors = errors.ToList() });
如果ModelState是Dictionary<TKey,TValue>
或类似的,您可以直接使用这些值:
var errors = ModelState.Values.Select(v => v.Errors.First().ErrorMessage);
return Json(new { success = false, errors = errors.ToList() });
答案 2 :(得分:2)
return new Json(new
{
success = false,
errors = ModelState.Keys.Select(k => ModelState[key].Errors.First().ErrorMessage).ToList()
});