2013-11-15 3 views
13

Ich kann nicht lokalisieren validieren: 'Passwort bestätigen' und 'Passwort' stimmen nicht überein. in MVC5"Passwort bestätigen" und "Passwort" stimmen nicht überein. MVC5

[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.")] //Why not display this message??????? 
     public string ConfirmPassword { get; set; } 

Bitte helfen Sie mir, es zu lokalisieren.

+0

Lokalisierung bedeutet, den Code an eine bestimmte Sprache anzupassen. Meinst du Internationalisierung? –

Antwort

6

Es scheint, dass es ein bekanntes Problem ist und im Moment nicht richtig funktioniert - http://aspnetwebstack.codeplex.com/workitem/1401.

Eine temporäre Problemumgehung würde jedoch das Compare-Attribut von System.Web.Mvc verwenden, das als veraltet markiert ist. Hier ein Beispiel:

using CompareObsolete = System.Web.Mvc.CompareAttribute; 

... 

[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")] 
[CompareObsolete("Password", ErrorMessage = "The password and confirmation password do not match.")] 
public string ConfirmPassword { get; set; } 

Ich verwende derzeit diese Problemumgehung, bis das offizielle Update verfügbar ist. Alles funktioniert einwandfrei - Ich verwende dieses Attribut, um Fehlermeldungen mithilfe von Ressourcen zu lokalisieren.

Vergessen Sie nicht, es zu aktualisieren, sobald die offizielle Lösung herauskommt.

EDIT: Das Problem wurde in der neuesten Version behoben.

13

Sie haben 2 Möglichkeiten, diesen Fehler zu beheben:

--option 1

Wechsel:

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

zu

[System.Web.Mvc.Compare("Password", ErrorMessage = "Your custom error message")] 

--option 2 (Ich empfehle das one)

Wir müssen unsere ASP.NET MVC 5. In Ihrem Visual Studio aktualisieren gehen Sie auf die Paket-Manager-Konsole und Typ:

PM> update-package 

Sie migh einen Fehler in der erhalten:

public ApplicationDbContext() 
      : base("DefaultConnection") 
     { 
     } 

dieser Fehler wird durch das Update in der inneren Struktur von MVC 5. verursacht, dass Fehlern um dies zu lösen tun: https://stackoverflow.com/a/23090099/2958543

2

Es scheint zwei Arten von CompareAttribute zu sein. Bei MSDN scheint die mit Namespace System.Web.Mvc veraltet zu sein und sie schlagen vor, die mit Namespace System.ComponentModel.DataAnnotations zu verwenden. -Link: https://msdn.microsoft.com/en-us/library/system.web.mvc.compareattribute(v=vs.118).aspx

Mit Visual Studios, werden Sie mit der Anmerkung explizit sein und den Namensraum hinzufügen, in der Anmerkung wie folgt zuzuordnen:

[System.ComponentModel.DataAnnotations.CompareAttribute("Password", ErrorMessage = "The password and confirmation password do not match.")] 

Weitere Informationen siehe auch: System.ComponentModel.DataAnnotations.compare vs System.Web.Mvc.Compare