2013-11-15 16 views
13

Nie mogę zlokalizować sprawdzania poprawności: "Potwierdź hasło" i "Hasło" nie pasują do siebie. w MVC5"Potwierdź hasło" i "Hasło" nie pasują do siebie. 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; } 

Proszę, pomóż mi to zlokalizować.

+0

Lokalizacja oznacza dostosowanie kodu do określonego języka. Czy masz na myśli internacjonalizację? –

Odpowiedz

6

Wygląda na to, że jest to znany problem i obecnie nie działa poprawnie - http://aspnetwebstack.codeplex.com/workitem/1401.

Jednak tymczasowe obejście byłoby przy użyciu atrybutu Porównaj z System.Web.Mvc, który jest oznaczony jako przestarzały. Oto przykład:

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

Obecnie używam tego rozwiązania, dopóki oficjalna poprawka nie jest dostępna. Wszystko działa doskonale - używam tego atrybutu do lokalizowania komunikatów o błędach za pomocą zasobów.

Po prostu nie zapomnij zaktualizować go, gdy pojawi się oficjalny komunikat.

EDYCJA: Problem został rozwiązany w najnowszej wersji.

13

Masz 2 opcje, aby rozwiązać ten problem:

--option 1

Zmiana:

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

do

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

--option 2 (Polecam to jeden)

Musimy zaktualizować naszą ASP.NET MVC 5. W Visual Studio przejdź do menedżera pakietów konsoli i wpisz:

PM> update-package 

migh Otrzymasz Błąd w:

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

Ten błąd jest spowodowany przez aktualizację w wewnętrznej strukturze MVC 5. Aby rozwiązać ten błąd, wykonaj następujące czynności: https://stackoverflow.com/a/23090099/2958543

2

Wygląda na to, że istnieją dwa typy CompareAttribute. Patrząc na MSDN, ten o przestrzeni nazw System.Web.Mvc wydaje się być przestarzały i sugeruje użycie tego z przestrzenią nazw System.ComponentModel.DataAnnotations. Link: https://msdn.microsoft.com/en-us/library/system.web.mvc.compareattribute(v=vs.118).aspx

z Visual Studio, musisz być jednoznaczne z adnotacją i dodać obszaru nazw do atrybutu w adnotacji tak:

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

Aby uzyskać więcej informacji, zobacz również: System.ComponentModel.DataAnnotations.compare vs System.Web.Mvc.Compare