我对MVC比较新,所以这可能是一个新手问题.
我试图了解如何在一些看似不直接的情景中保持明确的关注点分离的最佳实践.
我现在正在看两种情况.想象一个非常基本的应用程序,让用户可以查看和编辑律师的在线个人资料.有一个动作/视图可以显示特定用户的个人资料,还有一个动作/视图可以编辑特定用户的个人资料.很容易想象一个漂亮而干净的Model类来表示用户配置文件的详细信息,可能是使用Entity Framework进行的,并映射到用户配置文件SQL表.
在用于显示用户配置文件的视图操作/视图中,在功能上,我需要一个允许用户编辑配置文件的按钮或链接.但这应该只对某些用户子集可用.例如,用户可以编辑自己的配置文件.此外,超级用户可以编辑任何人的个人资料.我的问题是视图在呈现特定配置文件时应该如何确定链接是否存在.我认为View包含逻辑以确定当前用户是否可以编辑当前配置文件是错误的.我应该向UserProfile模型类添加IsEditable属性吗?这并不悲惨,但也感觉不完全正确.我应该创建一个新的Model类来聚合UserProfile以及有关安全性的其他信息吗?
另一种情况......当编辑特定的配置文件时,可编辑的事物之一是特定律师的专业列表.可能的专业清单并不固定.如果视图想要在组合框中呈现它们,则需要从数据库中列出所有可能的特性.视图不应该直接从数据库中获取它们,所以我是否再次进行聚合模型事物并为View提供UserProfile和有效专业列表?
我想我想弄清楚的一般性问题是我应该适应创建大量特定于各个视图的小型Model类.每个类都包含该特定视图所需的较大域模型的各个不相关部分.