我有一个ASP.Net MVC网站,它使用ASP.Net Identity来管理用户。
我使用默认机制,即用户的电子邮件也是他的用户名。当用户想要注册已经使用的电子邮件时,会显示两条错误消息:
登记表格的结构:
AccountController的HttpPost注册方法:
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);
}
如何才向用户显示电子邮件错误消息?
答案 0 :(得分:1)
将您的AddErrors()
方法替换为
ModelState.AddModelError("", String.Format("{0} is already taken", model.Email))
或者,如果您在视图中包含@Html.ValidationMessageFor(m => m.Email)
并希望消息与表单控件相关联,而不是在摘要中
ModelState.AddModelError("Email", String.Format("{0} is already taken", model.Email))
附注:您可能还需要考虑使用RemoteAttribute
,以便在提交表单之前获得客户端验证 - 请参阅How to: Implement Remote Validation in ASP.NET MVC(尽管您也应该将代码保留在上面(罕见) )case 2用户同时提交相同的Email
。