2010-10-27 56 views
0

我有一种情况,控制器操作应该导致有关给定对象的信息以不同方式显示,具体取决于用户对对象的权限。在ViewModel上使用标志的多个视图或单个视图

当前控制器操作代码会相应地返回两个视图中的一个:Info.ascxInfo_ViewOnly.ascx。由于这两个视图之间的差异很小(我只需要更新每个格式更改),我正在考虑有一个视图(Info.ascx)并将用户的权限传递给视图使用视图的模型。

您认为哪种方法更可取?备选建议也欢迎:-)

回答

1

您的视图中存在“If Else”逻辑很好地表明您可能需要将视图拆分为多个相应的视图。您的控制器可能是评估用户权限并将请求路由到最合适视图的最佳位置 - 因此,“If Else”逻辑可能应该发生在控制器而不是视图中。

+1

似乎这两个视图将基于几乎相同的模型。如果您要创建两个不同的视图,则会遇到代码重用问题。 – 2010-10-27 16:12:39

+0

良好的UserControl使用可以帮助减少两个视图之间的冗余代码(例如两个权限可用的核心菜单选项),但当新的需求进一步区分每个权限类型的表示组件时,分离视图可以使未来的维护变得更容易。最终,我认为这可能是一个案例,你可能花费太多时间来分割视图 - 如果统一视图是可维护的,那么没有坚定的规则说你不应该保持它的统一。 – 2010-10-27 17:05:43

+0

感谢您的建议 - 这真的是我的重点,我只是想知道是否有任何一种优先的约定。 – TonE 2010-10-28 09:13:43