2010-10-29 4 views
0

J'ai mis en place la page d'inscription personnalisée en étendant le fournisseur d'appartenance en utilisant le fournisseur de profil.J'ai enregistré avec succès l'utilisateur. Maintenant, je veux valider les champs de la page d'enregistrement.La page d'inscription intégrée a intégré messages de validation. Bu dans mon codage je ne passe pas de modèle à l'action d'enregistrement, au lieu je passe des propriétés. Donc si j'utilise If (ModelState.IsValid) il est toujours vrai même si je ne remplis pas de champs. mais ne pas afficher les messages d'erreur dans la page.S'il vous plaît dites-moi ce que je dois faire.Comment je reçois mes messages de validation.validation modelstate dans asp.net mvc 2.0

J'ai vu la classe des modèles de compte dans celle de registre Les modèles de validation de modèles sont là. Donc, je suis aussi en train d'écrire comme ça pour mes propriétés.

Merci à l'avance,

publique ActionResult UserRegistration (string FirstName, chaîne LastName, chaîne loginid, chaîne EMAILID, mot de passe de chaîne, chaîne ConfirmPassword) {

 //int id= int.Parse(ViewData["id"] as string); 


      string firstName = FirstName; 
      string lastName = LastName; 
      string userName = LoginId; 
      string email = EmailId; 
      string password = Password; 
      string confirmPassword = ConfirmPassword; 
      if (ModelState.IsValid) 
      { 
      MembershipCreateStatus status = MembershipService.CreateUser(userName, password, email); 
      //MembershipCreateStatus user = Membership.CreateUser(userName, password, email); 
      Roles.AddUserToRole(userName, "User"); 
      UserProfile.NewUser.Initialize(userName, true); 
      UserProfile.NewUser.FirstName = firstName; 
      UserProfile.NewUser.LastName = lastName; 
      if (status == MembershipCreateStatus.Success) 
      { 
       UserProfile.NewUser.Save(); 

       FormsService.SignIn(userName, false /* createPersistentCookie */); 
       return RedirectToAction("CreateAccountConfirmation"); 
      } 
      else 
      { 
       ModelState.AddModelError("", AccountValidation.ErrorCodeToString(status)); 
      } 

Répondre

0

le ModelState est valable parce que ce n'est pas invalide pour avoir un champ vide.

Soit vous devez vérifier tous les champs manuellement dans votre action (if (FirstName == null) ModelState.AddModelError("blabla");)

ou (et que je vous suggère) de créer un ViewModel et fournir des attributs de validation

public class RegistrationModel 
{ 
     [Required] 
     public string FirstName { get; set; } 
     [Required] 
     public string LastName { get; set; } 
     [Required] 
     public string LoginId { get; set; } 
     [Required] 
     public string EmailId { get; set; } 
     [Required] 
     public string Password { get; set; } 
     [Required] 
     public string ConfirmPassword { get; set; } 
} 
+0

Salut Fabino, i fait comme vous l'avez dit, mais il donne encore vrai et après donne erreur comme suit, – Mallikarjuna

+0

public MembershipCreateStatus CreateUser (string nomUtilisateur, mot de passe chaîne, email chaîne) { if (String.IsNullOrEmpty (userName)) throw new ArgumentException ("Valeur ne peut pas être nul ou vide. "," us erName "), je dois écrire les messages de validation aussi ou pas – Mallikarjuna

+0

parce que userName est nul, n'est-ce pas? Si vous utilisez un modèle de vue avec le [Obligatoire] attribuer cela ne devrait pas se produire – Fabiano