2016-03-30 4 views
11

Ich habe diesen Fehler in meinem AccountController.'Compare' ist ein mehrdeutiger Verweis zwischen 'System.ComponentModel.DataAnnotations.CompareAttribute' und 'System.Web.Mvc.CompareAttribute'

Der Typ oder Namespace-Name ‚SelectListItem‘ konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?

Die offensichtliche Lösung ist using System.Web.Mvc; jedoch hinzufügen, wenn ich ich 4 tun bekommen neue Fehler

Auf zwei Differenzleitungen:

Der Typ oder Namespace-Name ‚Errormessage‘ konnte nicht gefunden werden (möglicherweise fehlt eine using Rich e oder eine Montagebezug)

Auf weiteren 2 verschiedene Linien:

'Vergleichen' eine mehrdeutige Referenz zwischen 'System.ComponentModel.DataAnnotations.CompareAttribute' und ‚System.Web.Mvc. CompareAttribute

Warum passiert das und wie behebe ich es?

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

Haben Sie einen Verweis auf die Assembly unter dem Projektmappen-Explorer hinzufügen? –

Antwort

23

Ja. Beide dieser Namespaces haben dieses Attribut, das dieselbe Funktionalität hat.

Gemäß der msdn documentation ist System.Web.Mvc.CompareAttribute veraltet und es wird empfohlen, verwenden System.ComponentModel.DataAnnotations.CompareAttribute

So verwenden Sie entweder den vollständigen Namen einschließlich des Namespace.

[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; } 

Oder Sie können einen Aliasnamen verwenden, wenn Sie möchten, den vollständigen Namen nicht setzen in allen Orten

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

Beat mich durch eine Sekunde! = D –

Verwandte Themen