Lorsque je poste un objet 'Model' (tel que généré par LinqToSQL) sur un contrôleur, je peux interroger 'ModelState.IsValid', et s'il existe des attributs de validation sur l'un des les propriétés et la valeur ne sont pas validées, elles seront définies sur 'false'. Cependant, ModelState.IsValid semble toujours retourner 'true' si je poste un objet personnalisé de ma propre classe, même si les propriétés de cette classe ont des attributs de validation et reçoivent des valeurs incorrectes.La validation ne fonctionne pas sur les objets simples dans ASP.NET MVC
Pourquoi cela ne fonctionne qu'avec les objets de modèle DataContext? Qu'y a-t-il à propos de ces objets qui les font fonctionner avec ModelState.IsValid, contrairement aux classes normales?
Comment puis-je le faire fonctionner avec des classes normales?
Code contrôleur:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogIn(MyProject.Website.ViewModels.Shared.LogIn model)
{
if (ModelState.IsValid)
return View(model);
// ... code to log in the user
}
Code ViewModel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using MyProject.Website.Validators;
using System.ComponentModel;
public class LogIn
{
public LogInModes LogInMode { get; set; }
[Required]
[EmailAddress]
public string EmailAddress { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
}
Je suppose que ce n'est pas le cadre, mais sans un peu de code, il est difficile de dire quel est le problème. – tvanfosson