【问题标题】:ASP.Net 5 DI + Custom attribute constructorASP.Net 5 DI + 自定义属性构造函数
【发布时间】:2015-11-16 07:57:29
【问题描述】:

我需要一些关于用户注册的额外逻辑。所以我写了以下内容:

public class UniqueEmail : ValidationAttribute
{
    IApplicationDbContext _context;

    public UniqueEmail(IApplicationDbContext context)
    {
        _context = context;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        int count = _context.Users.Where(u => u.Email == value.ToString() && u.EmailConfirmed == true).Count();
        if (count == 0) return ValidationResult.Success;
        return new ValidationResult("unique email needed from attribute");
    }

}

Startup.cs:

services.AddScoped<IApplicationDbContext>(p => p.GetService<ApplicationDbContext>());

现在我应该如何将IApplicationDbContext 传递给 ViewModel 类中的属性?

[UniqueEmail(/*?*/)]
public string Email { get; set; }

一般来说,在这种情况下使用 DI 是个好主意吗?也许还有其他一些方法?

【问题讨论】:

标签: c# dependency-injection asp.net-core custom-attributes


【解决方案1】:

由于您使用的是EF7,因此您可以使用数据注释来确保电子邮件的唯一性。

[Index("IX_Email", IsUnique = true)]
public string Email{ get; set; }

您可以找到更多信息here

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 2020-12-08
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    相关资源
    最近更新 更多