2014-09-29 75 views
2

我正在使用身份2.0,我想知道如何在嘗試註冊已註冊的用戶時自定義錯誤消息。 下面的消息是我所接受的:MVC 5身份和錯誤消息

  • 名稱xxxxx已被採用。

Tks。

+1

參考http://stackoverflow.com/questions/20452352/issue-with-username-validation-message-in-asp-net-identity – Vivekh 2014-09-30 05:57:43

回答

6

我有一個類似的問題,this SO questionthis blog幫助了我。

將這些直接應用於您的問題,您可以通過兩種方式來完成。解決這個特定問題的一種快速方法,以及一種更爲複雜的方式,使您可以在將來修改任何其他Identity錯誤。

1.)快速方法: - 在Controllers/AccountController.cs下修改AddErrors(IdentityResult結果)方法。更改此:

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); 
     } 
    } 
} 
  • 甲更容易維護和擴展的解決方案是here on Brian Lachniet's blog。 Josh在同一個問題中的回答是一樣的,儘管Brian的博客明確描述瞭如何實現替換UserValidator方法。

    這是我遵循的方法,它的工作原理。作爲獎勵,他不斷更新它,最後一次更改使其與Identity 2.0在3月28日之前兼容。

  • +1

    我tryed沒有成功這兩個小技巧,但是,現在我爲第二個嘗試不同的方式,並正常工作。我剛剛創建了新類(CustomUserValidator),並在AccountController的Register操作中設置了UserManager.UserValidator = new CustomUserValidator (UserManager);在CreateAsync調用之前。 – Onaiggac 2014-10-06 16:53:46