Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The type or namespace Compare could not be found (are you missing a using directive or an assembly reference?)

Tags:

c#

asp.net-mvc

I'm trying to add an Admin to my site. There issue is found on my AccountsModels.cs

It simply has to compare the data implemented but I seem to get this error.

I also have a view with:
-Register.cshtml
-LogOn.cshtml
-ChangePasswordSuccess.cshtml
-ChangePassword.cshtml

& an AccountController.cs of course..

Someone know a solution?

Here is the code:

using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using System.Web.Security;

namespace Videoteek.Domain.Models
{
    public class ChangePasswordModel
    {
        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Current password")]
        public string OldPassword { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "New password")]
        public string NewPassword { get; set; }

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

    public class LogOnModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

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

        [Display(Name = "Remember me?")]
        public bool RememberMe { get; set; }
    }

    public class RegisterModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

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

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        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; }

        //****
        [Required]
        [Display(Name = "Security Question")]
        public string PwdQuestion { get; set; }
        [Required]
        [Display(Name = "Security Answer")]
        public string PwdAnswer { get; set; }

    }
}
like image 585
Pex Avatar asked Aug 17 '13 12:08

Pex


People also ask

Why am I getting error CS0246 the type or namespace name could not be found?

This often occurs because the casing used in the name of the type is not correct. For example, Dataset ds; generates CS0246 because the s in Dataset must be capitalized. If the error is for a type name, did you include the proper using directive, or, alternatively, fully qualify the name of the type?


2 Answers

From your code it looks like that you want to compare your password with confirm password. If it is so then your attribute

Compare

is not correct. it should be

[CompareAttribute("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]

You already have the desired namespace added in the code. You can read more about it here.

like image 178
Ehsan Avatar answered Sep 29 '22 08:09

Ehsan


I had the same error too. And I realized that when I was using .net 4.0 the System.Web.Mvc; and System.ComponentModel.DataAnnotations; usings it Resolved. But when I changed the framework o 4.5 the error was

'CompareAttribute' is an ambiguous reference between 'System.ComponentModel.DataAnnotations.CompareAttribute' and 'System.Web.Mvc.CompareAttribute'

and

The type or namespace name 'Compare' could not be found (are you missing a using directive or an assembly reference?)

Conclusion if the framework is 4.0

System.Web.Mvc;

System.ComponentModel.DataAnnotations;

and rebuilt the project else if the framework is 4.0

System.ComponentModel.DataAnnotations;

and rebuilt the project

Don't forget to always Run Visual Studio as(in) Administrator(mode)

like image 34
tecladista Avatar answered Sep 29 '22 08:09

tecladista