我使用JSON从表单发布数据并且ModelState.isValid()返回false,我为所有传入数据放置了一个WriteLine,并且所有内容看起来都很好,有没有办法显示模型状态错误以找出什么是没有验证? 这个确切的代码适用于其他模型
[HttpPost]
public ActionResult mobileCreateAction(Trip trip)
{
if (ModelState.IsValid)
{
System.Diagnostics.Debug.WriteLine("saving");
DB.Trips.Add(trip);
DB.SaveChanges();
return Json(new
{
success = true,
msg = "Success saving trip"
});
}
else
{
System.Diagnostics.Debug.WriteLine("invalid model state");
return Json(new
{
success = false,
msg = "Error saving trip"
}, JsonRequestBehavior.AllowGet);
}
}
感谢
答案 0 :(得分:35)
获取模型状态中的错误列表:
var errors = ModelState
.Where(x => x.Value.Errors.Count > 0)
.Select(x => new { x.Key, x.Value.Errors })
.ToArray();
然后在此行上放置一个断点并检查errors
变量。它将为您提供模型中的属性列表及其各自的错误。
答案 1 :(得分:2)
您可以在ModelState.Values集合中找到错误。每个值都有一个Errors集合,其中包含该属性的所有模型错误。
var errors = from v in ModelState.Values
where v.Errors.Count > 0
select v.Errors;
答案 2 :(得分:0)
在@ Darin的回答基础上,上面链接的帖子提供了显示“为什么”消息所需的代码。
foreach (var obj in ModelState.Values)
{
foreach (var error in obj.Errors)
{
if (!string.IsNullOrEmpty(error.ErrorMessage))
System.Diagnostics.Debug.WriteLine("ERROR WHY = " + error.ErrorMessage);
}
}