在ASP.net多视图的不同视图中使用相同的控件实例



我有一个asp:MultiView控件,它有两个视图和两个UserControls。在第一个视图中,我想将每个控件放在ASPxTabControl的不同选项卡中。在第二个视图中,我希望连续显示这两个控件,一个接一个。

当我在视图之间切换时,如何在每个视图中使用/看到具有完全相同视图状态的相同控件实例?

或者有更好的方法代替使用MutliView吗?

提前非常感谢您的回复。

干杯

在您的ASPX页面上试试这个:

    <asp:MultiView ID="mvTest" ActiveViewIndex="0" runat="server">
        <asp:View ID="vwFirst" runat="server">
            <asp:PlaceHolder ID="phFirstContainer" runat="server" ></asp:PlaceHolder>
        </asp:View>
        <asp:View ID="vwSecond" runat="server">
            <asp:PlaceHolder ID="phSecondContainer" runat="server" ></asp:PlaceHolder>
        </asp:View>
    </asp:MultiView>
    <asp:Button runat="server" ID="btnSwitchViews" Text="Switch Views" OnClick="btnSwitchViews_Click"/>

这个在你的ASPX.CS代码后面的页面上:

    protected void Page_PreRender(object sender, EventArgs e)
    {
        var myControl = new Label() {ID = "MyTextControl"};
        if (mvTest.GetActiveView().ID == "vwFirst")
        {
            myControl.Text = "I'm the same controller on the first view";
            phFirstContainer.Controls.Add(myControl);
        }
        else if(mvTest.GetActiveView().ID == "vwSecond")
        {
            myControl.Text = "I'm the same controller on the second view";
            phSecondContainer.Controls.Add(myControl);
        }
    }
    protected void btnSwitchViews_Click(object sender, EventArgs e)
    {
        mvTest.ActiveViewIndex = mvTest.ActiveViewIndex == 0 ? 1 : 0;
    }

为了简单起见,我使用ASP.NET标签,但您可以通过使用有问题的用户控件的类型以编程方式实例化用户控件,从而轻松地使用用户控件。

最新更新