2013-11-15 14 views
13

検証がローカライズできません: 'パスワードの確認'と 'パスワード'が一致しません。 MVC5で「パスワードの確認」と「パスワード」が一致しません。 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; } 

ローカライズしてください。

+0

ローカライズとは、コードを特定の言語に合わせることを意味します。国際化を意味しますか? –

答えて

6

これは既知の問題で、現時点で正しく動作していないようです - http://aspnetwebstack.codeplex.com/workitem/1401

ただし、一時的な回避策は、廃止予定のSystem.Web.MvcのCompare属性を使用することです。次に例を示します。

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

公式の修正が入手できるまで、この回避策を現在使用しています。すべてが完璧に動作しています。この属性を使用して、リソースを使用してエラーメッセージをローカライズしています。

正式な修正が出たら、更新するのを忘れないでください。

EDIT:この問題は、最新のリリースで修正されています。

--option 1

変更:

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

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

--option 2

13

あなたはこのバグを解決するために2つのオプションを持っています(私はこれをお勧めします

PM> update-package 

はあなたがエラーを取得するmigh:

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

は、我々はパッケージマネージャコンソールとタイプに行くあなたのVisual Studioで私たちのASP.NET MVC 5を更新する必要がありますエラーがこれを行うそのエラーを解決するためにMVC 5の内部構造の更新によって引き起こされる

https://stackoverflow.com/a/23090099/2958543

2

CompareAttributeの2種類があるようです。 MSDNを見ると、ネームスペースSystem.Web.Mvcのものは廃止されているようで、ネームスペースSystem.ComponentModel.DataAnnotationsのものを使用することをお勧めします。 リンク:ビジュアルスタジオとhttps://msdn.microsoft.com/en-us/library/system.web.mvc.compareattribute(v=vs.118).aspx

、アノテーションと明示的に、次のような注釈には属性する名前空間を追加する必要があります:

詳細について
[System.ComponentModel.DataAnnotations.CompareAttribute("Password", ErrorMessage = "The password and confirmation password do not match.")] 

、以下を参照してください。System.ComponentModel.DataAnnotations.compare vs System.Web.Mvc.Compare

関連する問題