在哪些情况下 MultiView 会是一个不错的选择?MultiView 控件及其视图控件似乎只是扩展了面板的概念。
Panels 和 MultiViews 似乎都容易被滥用。如果您的 UI 关注点和业务逻辑关注点被正确分离,为什么要将视图集中在一个 ASPX 中?
我使用 MultiViews 作为向导控件的更灵活的基础。
我同意将大量视图混为一谈是一种代码味道。在向导的情况下,您通常希望在整个过程中共享许多状态。多视图允许将此状态简单地存储在视图状态中。
大多数时候,我使每个视图的内容成为一个用户控件,它可以封装与该特定步骤相关的逻辑。
我已经在传递中使用它来实现一个简单的启用 Ajax 的选项卡界面。
将按钮设置为看起来像选项卡,然后将其设置为 onClick 事件以在更新面板中切换活动视图。
任何您发现自己切换一个或多个面板的显示的情况都是 MultiView 控件的主要候选者。例如,更加模板化的向导控件或主/详细表单。
我同意它们可以被滥用,您应该在使用它们之前评估是否最好将代码分成单独的页面。我曾经参与过一些项目,以前的开发人员试图使用 MultiViews 在单个页面上放太多东西,而且它们简直就是地狱。
MultiViews 需要注意的一件事是,与面板不同,其中包含的任何声明性数据源控件将始终绑定,即使它们包含在其中的视图不是活动/可见的。
任何时候您想根据某些条件在页面上显示不同的内容。在工作中,我创建了一个仅使用 MultiView 的选项卡控件和另一个看起来像选项卡的简单控件。每个选项卡都会在另一个控件中放置一个链接(样式化),该控件已连接以将活动视图设置为正确的选项卡。
它对于诸如在线表格之类的东西很有用,您可能有一个视图显示实际表格,而另一个视图显示带有“谢谢”文本等的后记。