tug*_*erk 6 c# asp.net asp.net-mvc dependency-injection asp.net-mvc-3
在我的 ASP.NET MVC 3 项目中,我在一个单独的类库项目中实现了存储库模式。
我也使用 EF 作为 ORM。我还用IValidatableObejct接口实现了一些模型验证。这是它的样子:
[MetadataType(typeof(AccommPropertySeasonPeriodAlias.MetaData))]
public partial class AccommPropertySeasonPeriodAlias : IValidatableObject {
private class MetaData {
[StringLength(5), Required]
[Display(Name = "Period Alias Name")]
public string AccommPropertySeasonPeriodAlias1 { get; set; }
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
var repo = new AccommPropertySeasonPeriodAliasRepository();
if (repo.GetAll(this.AccommPropertySeasonID).
Where(x => x.AccommPropertySeasonPeriodAlias1 == this.AccommPropertySeasonPeriodAlias1) != null)
yield return new ValidationResult("Alias Name needs to be unique");
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,从现在开始,我的模型完全紧耦合,因为我AccommPropertySeasonPeriodAliasRepository直接使用class 而不是使用IAccommPropertySeasonPeriodAliasRepository.
正确执行此操作的方法是什么,以便我的模型可以(不确定这是否正确)可以伪造进行单元测试?
可以使用 MVC 的内置解析器注入验证逻辑。
请参阅 ModelValidatorProvider 的用法,该用法是使用 MVC 中注册的容器解析的。