一つ質問があります。 Identity ASP .NETでエラーメッセージを変更しようとしていますが、その方法がわかりません。エラーメッセージを変更したい-「ログインはすでに完了しています」。CreateAsyncメソッドはこのエラーメッセージを返します。 。 私を助けてください。
_Microsoft.AspNet.Identity.UserManager<TUser>
_クラスには、タイプ_IIdentityValidator<TUser>
_のUserValidator
というパブリックプロパティがあります。 UserManagerのコンストラクターは、そのプロパティを_Microsoft.AspNet.Identity.UserValidator<TUser>
_のインスタンスに設定します。 CreateAsyncを呼び出すときに表示されるエラーメッセージは、Microsoft.AspNet.Identity.dllに埋め込まれているリソースからのものであり、UserValidator内からIdentityResultに追加されます。
_IIdentityValidator<TUser>
_の独自の実装を提供できます。これは、署名付きの単一のメソッドTask<IdentityResult> ValidateAsync(TUser item)
です。独自の検証を実装する必要がありますが、出力されるメッセージを制御できます。何かのようなもの:
_public class UserValidator : IIdentityValidator<ApplicationUser>
{
public async Task<IdentityResult> ValidateAsync(ApplicationUser item)
{
if (string.IsNullOrWhiteSpace(item.UserName))
{
return IdentityResult.Failed("Really?!");
}
return IdentityResult.Success;
}
}
_
デフォルトのUserValidatorクラスは、3つの基本的な検証を実行して、独自の検証を行う場合に留意します。
private void AddErrors(IdentityResult result)
{
foreach (var error in result.Errors)
{
if (error.StartsWith("Name"))
{
var NameToEmail= Regex.Replace(error,"Name","Email");
ModelState.AddModelError("", NameToEmail);
}
else
{
ModelState.AddModelError("", error);
}
}
}