私は、ASP.Net IDを使用してユーザーを管理するASP.Net MVCサイトを持っています。2つではなく1つだけのレジスタエラーを表示
私は、ユーザーの電子メールも彼のユーザー名であるというデフォルトのメカニズムを使用します。すでに取り込まれている電子メールに登録する場合、2つのエラーメッセージが表示されます。
- 名前はすでに[email protected]です。
- メールアドレス '[email protected]'は既に使用されています。
登録フォームの構造:
HttpPost AccountControllerの登録方法:
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser {UserName = model.Email, Email = model.Email};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
string callbackUrl =
await SendEmailConfirmationTokenAsync(user.Id, "Confirm your account");
return View("Info");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
にはどうすればいいだけのユーザーに電子メールのエラーメッセージを表示することができますか?
あなたの 'AddErrors()'メソッドを 'ModelState.AddModelError(" "、String.Format(" {0}はすでに使用されています "、model.Email)で置き換えてください;); –
Works。好奇心の外に:他のエラーはどのように追加されますか? (例えば、2つのパスワードフィールドが一致しないなど)これらのメソッドにも追加されていると思いました。私は間違っていたことが分かります。 @StephenMuecke –
あなたの検証属性のために追加されます。 'ConfirmPassword'プロパティに' [Compare] 'が適用されています。 'DefaultModelBinder'は、バインディングプロセス中に' ModelState'エラーを追加します。 –