【问题标题】:ModelState.IsValid Is Always Returning False Edit Form [duplicate]ModelState.IsValid 总是返回错误的编辑表单 [重复]
【发布时间】:2019-04-13 03:21:54
【问题描述】:

ModelState.IsValid 在我的编辑表单中总是返回 false。它甚至没有击中try catch。我做错了什么?

[AcceptVerbs("POST", "PUT")]
       public ActionResult Edit(ItemModel model)
       {   
               int customerID = model.customerID;

               using (BusinessLogicLayer BLL = new BusinessLogicLayer())
               {

               if (ModelState.IsValid)
               {

                   try
                   {   
                       BLL.InsertData(model.customerID);
                       BLL.SaveChanges();
                   }
                   catch (Exception e)
                   {
                      return View();
                   }
               }
           }

           return View();
       } 

【问题讨论】:

  • 如果ModelState 无效,那么您从表单中发布的值对于模型的属性无效。您还没有显示模型或视图,因此我们无法回答这个问题,但您可以检查 ModelState 以确定键(属性名称)和相关错误(或使用 var errors = ModelState.Keys.Where(k => ModelState[k].Errors.Count > 0).Select(k => new { propertyName = k, errorMessage = ModelState[k].Errors[0].ErrorMessage });

标签: c# asp.net-mvc entity-framework modelstate


【解决方案1】:

代码说明了什么。模型无效。这可能与您通过端点传递的模型有关。也许 ItemModel 在其属性之一上有一个 [Required] 属性,而您正试图在该属性上传递一个 NULL 值。

此外,根据 Stephen Muecke 的评论: 您可以通过访问 ModelState 的 Keys 属性来检查 ModelState 以确定 Keys(属性名称)和相关错误,如下所示

var errors = ModelState.Keys
                   .Where(k => ModelState[k].Errors.Count > 0)
                   .Select(k => new 
                   { 
                       propertyName = k, 
                       errorMessage = ModelState[k].Errors[0].ErrorMessage 
                   }).ToList()

【讨论】:

    猜你喜欢
    • 2012-11-02
    • 2013-02-26
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2020-07-29
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多