【发布时间】:2010-01-19 07:44:54
【问题描述】:
我正在构建的网站包含大量视图,这些视图将显示在同一位置,但根据用户导航菜单的方式隐藏或显示。
当您拥有一个包含 10 个不同视图的 MultiView 时,Visual Studio 的设计视图会变得非常混乱。我已经在几个用户控件中分离了每个视图的内容。但是有没有 MultiView 的替代品?
【问题讨论】:
-
为什么可以在 asp.net 中使用向导
我正在构建的网站包含大量视图,这些视图将显示在同一位置,但根据用户导航菜单的方式隐藏或显示。
当您拥有一个包含 10 个不同视图的 MultiView 时,Visual Studio 的设计视图会变得非常混乱。我已经在几个用户控件中分离了每个视图的内容。但是有没有 MultiView 的替代品?
【问题讨论】:
我通常只使用面板或占位符并手动切换可见性。但是后来我也不用 VS 设计器...
【讨论】:
假设您在这里使用 ASP.NET 网络表单...
这是投资一些强大的 Web 控件(如 Telerik ASP.NET 控件套件)的另一个原因。
您可以将他们的 RadTabStrip 控件与 RadMultiPage 控件一起使用。
您可以为每个 RadPageView 指定一个 ContentUrl,它允许您将每个视图分隔为单独的 aspx 文件。
这通过将每个视图分成各自的页面来简化您的解决方案,并提高性能,因为仅在最初查看时才请求 RadPageView 内容。
【讨论】:
我这样做的方法是在页面上放置一个占位符,并根据需要动态添加控件。
从您所说的看来,用户浏览菜单并决定在 MultiView 控件中显示哪个视图...
我想要这样的东西
ASPX 文件:
<asp:PlaceHolder id=phContentContainer" runat="server"></asp:PlaceHolder>
代码背后
switch (MenuSelection)
{
case "LOGIN" //Display the login control
{
ucLoginUserControlType loginControl = (ucLoginUserControlType)LoadControl("~/UserControls/ucLoginUserControlType.ascx");
phContentContainer.Controls.Add(loginControl);
}
}
显然,您希望代码隐藏比上面的 10 个视图更高效、更简洁……但您明白了。
这使您的 aspx 页面保持简单,并使未来的控件添加更容易实现。
希望这会有所帮助,我是从记忆中键入代码的,所以某些语法可能不正确 - 如果你不能让它运行,请大声告诉我,我会挖掘一些我何时完成此操作的示例。
祝你好运!
【讨论】: