asp.net标识中的用户名验证消息问题

时间:2013-12-08 10:31:27

标签: c# asp.net-mvc asp.net-membership asp.net-identity

我在我的项目中使用新的会员系统asp.net身份。我想使用电子邮件地址作为用户名,是的,我已经看过这些问题:

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

ASP.NET identity use email instead of user name

我知道如何使用电子邮件作为用户名。但我有另一个问题,验证错误消息:

Name xxxxxxxxx@xxxx.com is already taken.

当用户尝试使用现有的电子邮件地址注册时,会出现此消息。因此,我想提供错误消息,而不是此错误消息:

User with the given email address already exist.

那么我怎样才能在Asp.Net身份中做到这一点?

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:2)

另一种选择是插入你自己的UserValidator,它只进行用户名/电子邮件检查,如果它没有失败,它会委托给默认的UserValidator,否则它会返回一个带有你想要的错误信息的IdentityResult。 / p>