2014-04-16 6 views
-1

J'ai une erreur NullReferenceException dans la section de mot de passe oublié. Où est mon erreur et comment puis-je la réparer? Voici mes codes:Erreur NullReferenceException dans ASP.NET MVC

mon contrôleur:

 public ActionResult ForGotPasswordSent(ForGotModel forgetModel) 
      { 
       User user = _userService.GetUserByEmail(forgetModel.Email); 
       if (user.IsActive) 
       { 
        var objEmail = new EmailHelper(); 
        Message msg = new Message(); 
        msg.SuccessMessage = "You have sent the mail,Please verify that"; 
        msg.IsSuccess = true; 
        string strBody = "Thanks for using the forgot password function.You need to set new password to your account, please click here to proceed"; 
        bool result = objEmail.SendMail("[email protected]", "[email protected]", "", "Activate Your Account", strBody, true); 
        if (result) 
         return View("Activation", msg); 
        else 
         return View("Activation"); 
       } 
       else 
       { 

        this.ModelState.AddModelError("", "You have to activate your account"); 
        return View("Activation"); 
       } 
      } 

ma classe User:

public class User : IPrincipal 
    { 

     public int Id { get; set; } 

     [Required(ErrorMessage = "Kullanıcı adı girilmesi zorunludur.")] 
     [Display(Name = "Kullanıcı Adı")] 
     public string Username { get; set; } 

     [Required] 
     [DataType(DataType.EmailAddress)] 
     [Display(Name = "Email address")] 
     public string Email { get; set; } 


     [Required(ErrorMessage = "Password Required")] 
     public string Password { get; set; } 

     [DataType(DataType.Password)] 
     [Display(Name = "Confirm password")] 
     [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
     public string ConfirmPassword { get; set; } 

     public bool IsActive { get; set; } 
     public bool IsAdmin { get; set; } 
     public bool IsDeleted { get; set; } 
     public DateTime? CreatedDate { get; set; } 
     public DateTime? ModifiedDate { get; set; } 

mon ForgotModel

public class ForGotModel 
{ 
    [Required] 
    [Display(Name = "Email")] 
    public string Email { get; set; } 

} 

méthode _userService.GetUserByEmail:

public User GetUserByEmail(string email) 
     { 
      var user = _userRepository.Get(x => x.Email == email); 

      return user; 
     } 
+3

Avez-vous vérifié que votre objet 'User' n'est pas null? –

Répondre

2

Vous souhaiterez probablement ajouter une vérification null à l'utilisateur avant de vérifier la propriété IsActive. Essayez ceci:

if (user != null && user.IsActive) 
+0

Une exception NullReferenceException sera levée dans ce cas si l'appel de votre UserRepository n'a pas renvoyé un enregistrement correspondant à cet e-mail et que vous essayez ensuite d'accéder à une propriété (user.IsActive) sur cet objet nul. – MDiesel

1

GetUserByEmail peut renvoyer une valeur nulle si aucun utilisateur n'est trouvé. Vérifiez que votre objet utilisateur n'est pas null avant de rechercher user.IsActive.