正则表达式验证ASP.net MVC5中的ApplicationUser电子邮件地址

时间:2015-08-19 12:02:30

标签: asp.net-mvc-5

我正在asp.net MVC5中创建一个webapp,它只允许有特定域名的人注册。

据我所知,最简单的方法是使用正则表达式。有没有办法使用数据注释来更改模型,或者我是否必须使用视图来实现此目的?

2 个答案:

答案 0 :(得分:0)

使用MVC 5你正在使用ASPNET Identiy,并且基本属性封装在IdentityUser中,因此对于你的情况,你不能直接访问字段电子邮件,但yuo可以使用EF Fluent API添加一些规则,< strong>但部分原因是regularexpression属性不是EF Fluent API的一部分。

如果您需要了解如何将EF Fluent API与ASPNET标识一起使用:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    { }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        //Define rules
        modelBuilder.Entity<IdentityUser>()
        .Property(u => u.Email).IsRequired();
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

此致

答案 1 :(得分:0)

现在可能有点太晚了,但我建议如下:

我有一个应用程序,我需要修改一些ApplicationUser属性,我正在尝试一些尚未在现实​​生活中测试的东西,但我的单元测试到目前为止,它可能是对你有用。

覆盖ApplicationUser中的电子邮件属性,并添加自定义验证注释:

[ValidateEmailDomain(ErrorMessage = "Not a valid email domain.")]    
public override string Email { get; set; }

ValidateEmailDomain代码:

using System.ComponentModel.DataAnnotations;
using System.Web;

namespace WATHEVER
{
    public class ValidateEmailDomain: RequiredAttribute
    {
        public override bool IsValid(object value)
        {
            //code
        }
    }
}

请注意,由于ValidateEmailDomain继承自RequiredAttribute,因此它显然是强制性的,如果您不希望这样,您也可以在它为空时验证它。

对不起我的英文:/