我正在asp.net MVC5中创建一个webapp,它只允许有特定域名的人注册。
据我所知,最简单的方法是使用正则表达式。有没有办法使用数据注释来更改模型,或者我是否必须使用视图来实现此目的?
答案 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,因此它显然是强制性的,如果您不希望这样,您也可以在它为空时验证它。
对不起我的英文:/