MultiView 和 View Web 服务器控件用作其他控件和标记的容器,并提供了一种可方便地显示信息的替换视图的方式。可以使用 MultiView 和 View 控件执行如下任务:
-
根据用户选择或其他条件提供备选控件集。例如,您可能允许用户从一个源 (feed) 列表中选择,其中每个源都在独立的 View 控件中配置。然后可以显示包含用户选择的源的 View 控件。可以使用 MultiView 和 View 控件作为创建多个 Panel 控件的一种替代方法。
-
创建多页窗体。MultiView 和 View 控件可以提供与 Wizard 控件相似的行为。Wizard 控件尤其适合于创建用户分步骤填写的窗体。Wizard 控件还支持更多内置 UI 元素(如页眉和页脚)、“上一页”和“下一页”按钮以及模板。如果要创建根据条件(而不是按顺序)更改的显示,或者不需要 Wizard 控件支持的额外功能,则可以使用 MultiView 控件来代替 Wizard。
MultiView 和 View 结构
MultiView 控件用作一个或多个 View 控件的外部容器。View 控件又可包含标记和控件的任何组合。
MultiView 控件一次显示一个 View 控件,并公开该 View 控件内的标记和控件。通过设置 MultiView 控件的 ActiveViewIndex 属性,可以指定当前可见的 View 控件。
呈现 View 控件内容
未选择某个 View 控件时,该控件不会呈现到页面中。但是,每次呈现页面时都会创建所有 View 控件中的所有 Web 服务器控件的实例,并且将这些实例的值存储为页面的视图状态的一部分。
无论是 MultiView 控件还是各个 View 控件,除当前 View 控件的内容外,都不会在页面中显示任何标记。例如,这些控件不会以与 Panel 控件相同的方式来呈现 div 元素。但是,这些控件也不支持可以作为一个整体应用于当前 View 控件的外观属性。但是可以将一个主题分配给 MultiView 或 View 控件,控件将该主题应用于当前 View 控件的所有子控件。
引用控件
每个 View 控件都支持 Controls 属性,该属性包含该 View 控件中的控件集合。但是,可以在代码中单独引用 View 控件中的控件。有关详细信息,请参见以编程方式访问 ASP.NET 控件。
在视图间导航
通过将 MultiView 控件的 ActiveViewIndex 属性设置为要显示的 View 控件的索引值,可以在视图间移动。MultiView 控件还支持可以添加到每个 View 控件的导航按钮。
若要创建导航按钮,可以向每个 View 控件添加一个按钮控件(Button、LinkButton 或 ImageButton)。然后可以将每个按钮的 CommandName 和 CommandArgument 属性设置为保留值以使 MultiView 控件移动到另一个视图。下表列出了保留的 CommandName 值和相应的 CommandArgument 值。
CommandName 值 | CommandArgument 值 |
---|---|
NextView |
(没有值) |
PrevView |
(没有值) |
SwitchViewByID |
要切换到的 View 控件的 ID。 |
SwitchViewByIndex |
要切换到的 View 控件的索引号。 |
下面的代码示例显示一个包含三个 View 控件的 MultiView 控件。每个 View 控件包含一个移动到特定 View 控件的 Button 控件。
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0"> <asp:View ID="View1" runat="server"> View 1<br /> <br /> <asp:Button ID="Button1" runat="server" CommandArgument="View2" CommandName="SwitchViewByID" Text="Go to View2" /> </asp:View> <asp:View ID="View2" runat="server"> View 2<br /> <br /> <asp:Button ID="Button2" runat="server" CommandArgument="View3" CommandName="SwitchViewByID" Text="Go to View 3" /> </asp:View> <asp:View ID="View3" runat="server"> View 3<br /> <br /> <asp:Button ID="Button3" runat="server" CommandArgument="View1" CommandName="SwitchViewByID" Text="Go to View 1" /> </asp:View> </asp:MultiView>