【发布时间】:2012-09-20 22:03:28
【问题描述】:
我正在使用 asp.net mvc 3。我有这样的场景:
- 我有用户模型和组模型。一个用户可以有很多组,一个组可以有很多用户。因此,它是多对多关系。
- 我有一个 UserController 和一个 GroupController。
- 用户可以创建新组。
- 我有存储库模式中描述的 UsersRepository 和 GroupsRepository。
- GroupController 有一个 Create(Group newGroup) 操作。
- 一个用户的组不能超过 10 个。
- 组名必须是唯一的。
问题 1:要处理限制 6,我必须在类 User 上实现 IValidatableObject 并在 User 拥有超过 10 个组时生成验证错误。但是,由于 GroupController 的 Create 动作只接收 Group 作为参数,模型绑定器永远不会调用 User.Validate()。
问题 2:处理限制 7 的唯一方法是根据组存储库中已存在的所有组验证新组名称。因此,此验证必须在 GroupsRepository 中。我说的对吗?
毕竟,我觉得我做错了什么。我的问题是:在我的场景中,实现现有用户创建新组的最佳方法是什么?我应该创建一个像 UserGrougViewModel 这样的视图模型并将其传递给 GroupController 的 Create 操作吗?或者我应该保持 Create(Group newGroup) 操作不变,并在 UserController 上添加一个 CreateGroup(User user) 操作以根据规则 6 验证用户,然后重定向到 GroupController 的操作 Create(Group newGroup)?
【问题讨论】:
标签: asp.net-mvc entity-framework-4.1