MVC 5 - 本地化唯一验证

时间:2014-09-25 12:27:33

标签: asp.net-mvc validation asp.net-mvc-5 fluentvalidation

所以我尝试使用FluentValidation在MVC 5项目中验证我的模型。

一切都很顺利,但我遇到了一个我不知道如何修复的问题。

我将所有内容都本地化为英语和葡萄牙语。如果我尝试注册已存在的用户,则会创建一条消息,如:

Name 'example@mail.com' is already taken
Email 'example@mail.com' is already taken

我使用新MVC 5项目附带的身份验证系统,因为这只是一个原型测试项目。

我已经在验证器中创建了此方法:

public bool UniqueNameEmail(RegisterViewModel model, string nameemail)
{
    ApplicationDbContext _db = new ApplicationDbContext();
    var dbModel = _db.Users.Where(x => x.UserName.ToLower() == nameemail.ToLower())
                               .SingleOrDefault();
    if (dbModel == null) return true;

    return dbModel.Email == model.Email;
}

如果您想知道为什么我使用名称和电子邮件,那是因为名称始终等于注册的电子邮件。 然后我像这样使用它:

RuleFor(registerViewModel => registerViewModel.Email).Must(UniqueNameEmail).WithLocalizedMessage(() => Resource.Unique_Field)

但实体验证会覆盖来自验证器的验证。

我不知道如何解决这个问题。有人可以帮忙吗?

0 个答案:

没有答案