ModelState.IsValid всегда возвращает false

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

person Mizbella    schedule 14.11.2012    source источник
comment
Не могли бы вы показать код для вашей модели пользователей и вашего представления? Это поможет сообществу решить проблему   -  person heads5150    schedule 14.11.2012
comment
@ user1697789. Убедитесь, что в модели нет нулевых записей для ненулевых свойств. Кроме того, вы пробовали мой ответ?   -  person gdoron is supporting Monica    schedule 14.11.2012
comment
Нам нужно ваше мнение. И добавьте это мнение к своему первоначальному вопросу, а не в комментариях.   -  person Kirill Bestemyanov    schedule 14.11.2012


Ответы (1)


ModelState.IsValid будет ложным, если проверка модели не удалась.

  1. У вас есть DataAnnotation, из-за которого не удалось поступить модель.
  2. Вы добавили пользовательские проверки.
  3. Убедитесь, что в модели нет нулевых записей для ненулевых свойств.

Проверьте ModelState.Errors, в чем причина этого. Вы можете использовать это:

var errors = ModelState.Values.SelectMany(v => v.Errors);
person gdoron is supporting Monica    schedule 14.11.2012
comment
должен ли этот код быть написан внутри if (ModelState.IsValid) - person Mizbella; 14.11.2012
comment
@ user1697789. Нет, это простой код, чтобы вывести ошибку в modelState, поместите ее над if (ModelSatate.IsValid). - person gdoron is supporting Monica; 14.11.2012
comment
+1 для ошибок var = ModelState.Values.SelectMany (v = ›v.Errors); - person DmitryBoyko; 27.05.2013
comment
Вставьте ModelState.Values.SelectMany(v => v.Errors).ElementAt(0); в immediate window. - person Jess; 04.08.2017
comment
Это все еще должно работать? error для меня является нулевым, но я просто посмотрел на ModelState в отладчике, я мог просмотреть ошибки напрямую. - person Heinzlmaen; 02.11.2020