2016-03-30 20 views
11

Ho questo errore nel mio AccountController.'Compare' è un riferimento ambiguo tra 'System.ComponentModel.DataAnnotations.CompareAttribute' e 'System.Web.Mvc.CompareAttribute'

il tipo o il namespace name 'SelectListItem' non è stato trovato (le manca un un riferimento all'assembly direttiva using o?

La correzione evidente è quello di aggiungere using System.Web.Mvc; Tuttavia quando lo faccio ho 4 nuovi errori

su due linee di differenza:

Il tipo o dello spazio dei nomi il nome 'ErrorMessage' non è stato trovato (che le manca un utilizzando direttiv E o un riferimento assembly)

Su un altro 2 linee differenti:?

'Confronto' è un riferimento ambiguo tra 'System.ComponentModel.DataAnnotations.CompareAttribute' e 'System.Web.Mvc. CompareAttribute '

Perché questo succede e come lo risolvo?

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


} 

ResetPasswordViewModel

public class ResetPasswordViewModel 
{ 

    [DataType(DataType.Password)] 
    [Display(Name = "Confirm password")] 
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 

} 
+0

Forse si aggiunge un riferimento al gruppo sotto l'esploratore soluzione? –

risposta

23

Yea. Entrambi questi spazi dei nomi hanno quell'attributo che ha la stessa funzionalità.

Come per la msdn documentation, System.Web.Mvc.CompareAttribute è obsoleta e si raccomanda di usare System.ComponentModel.DataAnnotations.CompareAttribute

Quindi, o utilizzare il nome completo compreso lo spazio dei nomi.

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

Oppure si può usare un alias, se non si vuole mettere il nome completo in tutti i luoghi

using Compare = System.ComponentModel.DataAnnotations.CompareAttribute; 
public class ResetPasswordViewModel 
{ 
    [DataType(DataType.Password)] 
    [Compare("Password", ErrorMessage = "The password and confirm password do not match.")] 
    public string Password { set;get;} 
    //Other properties as needed 
} 
+1

Sconfiggimi di un secondo! = D –

Problemi correlati