我有一个问题。 我在Identity ASP .NET中尝试更改错误消息,我不知道它是怎么做的。 我想要更改错误消息 - “已经登录”。 CreateAsync方法返回此错误消息。 请帮帮我。
答案 0 :(得分:13)
Microsoft.AspNet.Identity.UserManager<TUser>
类有一个名为UserValidator
的公共属性IIdentityValidator<TUser>
。 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类执行三个基本验证,如果您自己滚动,请记住:
答案 1 :(得分:6)
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);
}
}
}