C# .NET MVC3 ModelState.IsValid

发布于 2024-10-29 21:23:23 字数 724 浏览 0 评论 0原文

我使用 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);
    }  
}

谢谢

Im using JSON to post data from a form and ModelState.isValid() returning false, i put a WriteLine for all incoming data and everything looks fine data wise, is there a way to display model state errors to figure out what is not validating?
this exact code works fine with other models

[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);
    }  
}

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我不是你的备胎 2024-11-05 21:23:25

您可以在 ModelState.Values 集合中找到错误。每个值都有一个 Errors 集合,其中包含该属性的所有模型错误。

var errors = from v in ModelState.Values 
             where v.Errors.Count > 0 
             select v.Errors;

You can find the errors in the ModelState.Values collection. Every value has an Errors collection that contains all the model errors for that property.

var errors = from v in ModelState.Values 
             where v.Errors.Count > 0 
             select v.Errors;
荭秂 2024-11-05 21:23:25

SO Post

基于@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);
                }
            } 

SO Post

Building on @Darin's answer the post linked above provides the code needed to display the 'why' message.

 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);
                }
            } 
jJeQQOZ5 2024-11-05 21:23:24

要获取模型状态中的错误列表:

var errors = ModelState
    .Where(x => x.Value.Errors.Count > 0)
    .Select(x => new { x.Key, x.Value.Errors })
    .ToArray();

然后在此行上放置一个断点并检查 errors 变量。它将为您提供模型的属性列表及其各自的错误。

To get a list of errors in the model state:

var errors = ModelState
    .Where(x => x.Value.Errors.Count > 0)
    .Select(x => new { x.Key, x.Value.Errors })
    .ToArray();

Then put a break point on this line and inspect the errors variable. It will give you a list of properties on your model with their respective errors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文