如何自定义从UserManager返回的错误消息?

时间:2015-02-13 11:19:43

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

我正在使用.Net MVC和Identity开发应用程序。我正在创建这样的新用户:

result = await UserManager.CreateAsync(user, model.Password);

当电子邮件地址已被使用时,我收到错误讯息。我想自定义该错误消息。

RegisterModel中的我的电子邮件属性如下所示:

[Required(ErrorMessage = "Email adresinizi girmediniz.")]
[DataType(DataType.EmailAddress)]
[EmailAddress(ErrorMessage = "Email adresi hatalı.")]
[Display(Name = "Email")]
public string Email { get; set; }

我如何自定义"电子邮件xxx已在使用"信息?

1 个答案:

答案 0 :(得分:2)

在POST方法中,为属性添加ModelState错误并返回视图。

if(EmailNotAvailable)
{
  ModelState.AddModelError("Email", "Your custom error message");
  return View(model);
}

您还可以使用[Remote]属性在客户端上执行此验证。

[Remote("IsEmailAvailable", "YourControllerName", ErrorMessage = "Your custom error message")]
public string Email { get; set; }

并实施一个控制器方法,检查电子邮件是否可用

public JsonResult IsEmailAvailable(string Email)
{
  if(EmailNotAvailable)
  {
    return Json(false, JsonRequestBehavior.AllowGet);
    // or to override the error message you defined in the RemoteAttribute
    return Json("Another custom message, JsonRequestBehavior.AllowGet);
  }
  else
  {
    return Json(true, JsonRequestBehavior.AllowGet);
  }
}

有关实施RemoteAttribute

的详细信息,请参阅this article