asp.net-mvc – 视图模型最佳实践中的ASP.NET MVC自定义验证
发布时间:2020-12-16 03:22:10 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试将域驱动设计与测试驱动开发的组合用于我在ASP.NET MVC 3中构建的此应用程序.我的架构设置了存储库,域模型,视图模型,控制器和视图.所有验证都将在视图模型中处理.我将我的视图模型设置为继承自“IValidatableObject”,以便我的验证属性和我在“Val
我正在尝试将域驱动设计与测试驱动开发的组合用于我在ASP.NET MVC 3中构建的此应用程序.我的架构设置了存储库,域模型,视图模型,控制器和视图.所有验证都将在视图模型中处理.我将我的视图模型设置为继承自“IValidatableObject”,以便我的验证属性和我在“Validate”方法中设置的自定义验证都在我的控制器方法调用“ModelState.IsValid”时执行.我遇到的问题是在我的视图模型的Validate方法中访问我的存储库.我需要访问存储库以检查数据库中的重复记录.似乎最好的想法是创建一个IRepository类型的属性,并通过将我的存储库注入视图模型的构造函数来设置该属性.例如:
public class UserViewModel : IValidatableObject { public UserViewModel(User user,IUserRepository userRepository) { FirstName = user.FirstName; LastName = user.LastName; UserRepository = userRepository; UserName = user.UserName; } public string UserName { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public IUserRepository UserRepository { get; set; } public IEnumerable<ValidationResult> Validate() { UserCriteria criteria = new UserCriteria { UserName = this.UserName }; IList<User> users = UserRepository.SearchUsers(criteria); if (users != null && users.count() > 0) { yield return new ValidationResult("User with username " + this.UserName + " already exists." } } } 你们认为这是个好主意吗? 解决方法
这很好,但如果我是你,我会用
... private readonly Func<IUserRepository> userRepositoryFactory; ... public IEnumerable<ValidationResult> Validate() { UserCriteria criteria = new UserCriteria { UserName = this.UserName }; using(var UserRepository = userRepositoryFactory()) { IList<User> users = UserRepository.SearchUsers(criteria); if (users != null && users.count() > 0) { yield return new ValidationResult("User with username " + this.UserName + " already exists." } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 以下部分已定义,但尚未针对布局页面“?/ Views
- ASP.NET+d3.js实现Sqlserver数据库的可视化展示
- asp.net-mvc-2 – 引用用TextBoxFor()创建的控件ID
- asp.net-mvc – MVC.net获取枚举显示名称而不必参考枚举类型
- asp.net – 跨页回发并再次保留源页面中的数据
- asp.net – 在DataBind上默认为空值
- 初识ABP vNext(5):ABP扩展实体
- asp.net-mvc – 从IIS重写http到https的URL重写不起作用,
- asp.net – 在Repeater控件中实现功能链接
- ASP.NET MVC:将自定义属性放入选择列表中的选项标签
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC(和MvcContrib)的隐藏
- 解决T4模板的程序集引用的五种方案
- asp.net – 如何向客户部署和管理C#Web应用程序,
- asp.net – 无法使用PreSendRequestHeaders()覆盖
- .NetCore技术研究-ConfigurationManager在单元测
- ASP.NET主题 – 应该使用它们吗?
- asp.net-mvc – Cookie中的ASP.NET MVC Store Te
- 为ASP.NET网站创建DAL
- ASP.NET Core在Azure Kubernetes Service中的部署
- asp.net – 将Eval参数从ASPX文件传递给JavaScri
热点阅读