【问题标题】:MVC 5 Identity and error messageMVC 5 身份和错误消息
【发布时间】:2014-11-24 10:33:49
【问题描述】:

我正在使用 Identity 2.0,我想知道在尝试注册已注册用户时如何自定义错误消息。 以下消息是我收到的:

  • 姓名 xxxxx 已被占用。

Tks.

【问题讨论】:

标签: asp.net-mvc-5 asp.net-identity


【解决方案1】:

我遇到了类似的问题,this SO questionthis blog 帮助了我。

将这些直接应用于您的问题,您可以通过两种方式进行。解决此特定问题的快速方法,以及允许您在将来修改任何其他身份错误的更复杂的方法。

1.) 快捷方式: - 在 Controllers/AccountController.cs 下修改 AddErrors(IdentityResult result) 方法。改变这个:

    private void AddErrors(IdentityResult result)
    {
        foreach (var error in result.Errors)
        {
            ModelState.AddModelError("", error);
        }
    }

对此: 同样,此代码是Marius 在我引用的问题中提出的答案。我自己没有使用它,但看起来它应该可以工作。

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);
        }
    }
}
  1. 更可维护和可扩展的解决方案是here on Brian Lachniet's blog。 Josh 在同一个问题中的回答是一样的,尽管 Brian 的博客明确描述了如何实现替换 UserValidator 方法。

    这是我遵循的方法,它有效。作为奖励,他不断更新它,最后一次更改使其与 Identity 2.0 兼容,截至 3 月 28 日。

【讨论】:

  • 我已经尝试了这两个技巧但没有成功,但是,现在我为第二个尝试了另一种方法并且效果很好。我刚刚创建了新类(CustomUserValidator),并在 AccountController 上的注册操作中设置了 UserManager.UserValidator = new CustomUserValidator(UserManager);在 CreateAsync 调用之前。
猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
相关资源
最近更新 更多