我有一个 asp .net mvc 应用程序。对于我的所有其他属性,我使用数据注释来验证属性。但我想要一个自定义验证。我正在网上阅读自定义数据注释验证可能是采用的方法。
按照此处的链接ASP.NET MVC: Custom Validation by DataAnnotation它看起来是一个很好的解决方案。我遇到的唯一问题是如果我的 DBContext 不在控制器中,我该如何访问它。
到目前为止我所拥有的
这是我在控制器中用于获取当前用户和数据库上下文的典型代码。
控制器代码
private ApplicationDbContext _dbContext => HttpContext.GetOwinContext().Get<ApplicationDbContext>();
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
视图模型
[HasNoRedemption]
public string code {get; set;}
HasNoRedemption.cs
public class HasNoRedemption : ValidationAttribute
{
public override bool IsValid(object value)
{
//check if user has ever claimed the code, return true is good
}
}
如果我可以在进行自定义验证方面获得一些帮助,以便我能够检查数据库或提出更好方法的建议。