【问题标题】:ModelState.IsValid is always returning false [duplicate]ModelState.IsValid 总是返回 false [重复]
【发布时间】:2012-11-02 15:51:16
【问题描述】:
[HttpPost]
public ActionResult Create(Users user)
{
    if (ModelState.IsValid)
    {
        db.Users.Add(user);
        db.SaveChanges();
        return RedirectToAction("Index");  
    }

    return View(user);
}

ModelState.IsValid 总是假的。
所以它只是返回视图并且没有添加新记录..

编辑

用户:

public class User
{
    public int UserID { get; set; } 
    public string Name { get; set; } 
    [Display(Name = "Confirm Password")] [DataType(DataType.Password)] 
    public string ConfirmPassword { get; set; } 
    public string Designation { get; set; } 
    [Display(Name = "Date of Join")] [DataType(DataType.Date)] public DateTime DOJ { get; set; } 
    public string Email { get; set; } 
    [Display(Name = "Phone Number")] public System.Int64 PhoneNo { get; set; }
}

【问题讨论】:

  • 能否请您显示您的用户模型和视图的代码?它将帮助社区解决问题
  • @user1697789。确保模型中没有非空属性的空条目。另外,你试过我的答案了吗?
  • 我们需要您的意见。并将此视图添加到您的初始问题中,而不是在 cmets 中。

标签: asp.net-mvc asp.net-mvc-3 modelstate


【解决方案1】:

如果模型验证失败,ModelState.IsValid 将为 false。

  1. 您有 DataAnnotation 导致传入模型失败。
  2. 您添加了自定义验证。
  3. 确保模型中没有非空属性的空条目

检查ModelState.Errors 的原因是什么。你可以使用这个:

var errors = ModelState.Values.SelectMany(v => v.Errors);

【讨论】:

  • 这段代码要写在 if(ModelState.IsValid) 里面吗
  • @user1697789。不,这是一个简单的代码给你modelState中的错误,把它放在if (ModelSatate.IsValid)上面。
  • +1 for var 错误 = ModelState.Values.SelectMany(v => v.Errors);
  • ModelState.Values.SelectMany(v => v.Errors).ElementAt(0);粘贴到immediate window中。
  • 这仍然应该工作吗? “errors”对我来说是null,但我只是在调试器中查看了ModelState,我可以直接查看错误。
猜你喜欢
  • 2013-02-26
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 2019-04-13
相关资源
最近更新 更多