2013-12-08 11 views
8

私は自分のプロジェクトで新しいメンバーシップシステムasp.netアイデンティティを使用しています。 、asp.net IDのユーザ名検証メッセージに関する問題

Configure Microsoft.AspNet.Identity to allow email address as username

ASP.NET identity use email instead of user name

と私は別の問題を持っているUsername.Butとして電子メールを使用する方法を知っている:私は、ユーザー名と電子メールアドレスを使用したいとはい私はすでに、これらの質問を見てきました検証エラーメッセージ:

Name [email protected] is already taken.

ユーザーがexisに登録しようとすると、このメッセージが来ますティンメールaddress.Soの代わりに、私はいくつかのようなエラーメッセージを与えたい、このエラーメッセージ:

User with the given email address already exist.

は、どのように私はAsp.Netのアイデンティティでこれを行うことができます?

答えて

11

メッセージを置き換えるだけです。 「名前{0}は既に使用されています」を検索してください。 "指定されたメールアドレスを持つユーザーは既に存在しています"というメッセージで置き換えてください。

AddErrorメソッドで実行できます。 これは一例です。アプリケーション固有の作業コードを作成する必要があります。

private void AddErrors(IdentityResult result) 
{ 
    foreach (var error in result.Errors) 
    { 
     if (error.EndsWith("is already taken.")) 
      ModelState.AddModelError("", "User with the given email address already exists"); 
     else ModelState.AddModelError("", error); 
    } 
} 
+3

これは機能しますが、それは優雅ではありません。私は、ASP.NETアイデンティティチームが実際のコードに取り組んでいると信じています - source here:http://stackoverflow.com/a/19962202/687549 – PussInBoots

2

別のオプションは、それが失敗していない場合は、ユーザー名のみ/電子メールのチェックを行い、独自のUserValidatorにプラグインすることになり、それをデフォルトのUserValidatorに委譲し、それ以外の場合はエラーでIdentityResultを返します。あなたが望むメッセージ。