3

我有我想像的非常标准的网络界面。

有 4 种不同的 ListViews(网格控件)可以通过顶部的一系列选项卡访问。

我已经实现了如下:

替代文字 http://img402.imageshack.us/img402/1530/pagedu8.jpg

Tab 1 会将包含 Grid 1 的 Page 1 加载到 Frame 2 中,Tab 2 会将包含 Grid 2 的 Page 2 加载到 Frame 2 中,依此类推。

但是,这意味着如果您单击网格中的某个项目,并且我将 DetailsPage1.aspx 加载到第 2 帧中,则第 1 帧和选项卡仍然可见且处于活动状态。

我被告知我应该只有一个框架,并使用 HttpRequest(或 asp.net 中的 WebRequest)根据选项卡单击动态加载页面。

这是正确的方法吗?如果您手头有任何资源或提示,将不胜感激!

谢谢

4

9 回答 9

4

框架是绝对禁止的。使用其他技术无法实现的帧没有任何好处。

这是否意味着您必须使用 AJAX?不必要。如果您觉得需要提供丰富、无缝的界面,AJAX 是一个非常好的解决方案,但这并不是绝对必要的。

您可以使用服务器端包含将您的选项卡分隔到另一个(常见)子页面中,但是由于您提到了 ASP.NET,(假设您在框架 v2 或更高版本上运行)您可能想要使用母版页,您的选项卡位于一个内容部分或 Master 本身中,您的网格/详细信息位于另一个内容部分。

这两种技术之间的主要区别在于,使用 AJAX,从选项卡到选项卡的转换将是流畅和无缝的,但是 a)它需要一些额外的工作(特别是如果你不熟悉任何给定的 AJAX 框架)和 b)因为你基本上将 4 个页面合二为一,这些页面“更重”并且维护起来更复杂。如果您选择非 AJAX 路由,关键区别在于,当您单击每个选项卡时(因为它每次都会加载一个新页面),会有一个小而明显的刷新效果。

当然,无论如何,母版页对于保持一致的站点样式和结构很有用,因此没有理由不能将 AJAX 与母版页系统一起使用。

于 2008-10-31T13:36:02.310 回答
3

框架是蹩脚的:如果用户想要设置书签并且用户通过谷歌访问您的网站,您会遇到问题:那么您的导航框架不可见。所以你需要很多肮脏的javascript。检查这一点。如果您需要 javascript,请从一开始就使用 AJAX

于 2008-10-31T11:55:37.957 回答
2

阿贾克斯是最佳选择。但请记住,通过后退/前进使其可浏览。最好的选择是更改页面哈希。我用过这样的东西:

domain.com/#tab1 用于第一个选项卡 domain.com/#tab2 用于第二个选项卡

等等。

如果您使用 jQuery,可能是一个好的开始(我使用它并且我没有问题)。我确信所有流行的框架都有解决方案:)

于 2008-10-31T11:59:22.380 回答
2

而不是使用框架,您应该只在所有其他页面中包含您的导航页面。浏览器将看到您在所有页面中都包含相同的文档并将其缓存。

于 2008-10-31T12:00:45.607 回答
1

您是否尝试过TabContainer或加载所有 4 个详细信息窗格并仅在选项卡选择更改时显示/隐藏面板?

根据您的用户将看到的屏幕,如果您动态加载详细视图(Ajax 或回发),您可能无法持久保存用户输入的任何信息,并且您将需要等待(用户不喜欢等待)

于 2008-10-31T11:58:44.753 回答
1

我会推荐使用 jQuery 和 jQuery UI 插件。不需要框架,只需要 div 容器。

于 2008-10-31T12:01:36.790 回答
1

与 StingyJack 一样,我建议您查看TabContainer控件,但您可能需要注意,如果这样做,您的 ViewState 不会变得太大。

因此,例如,在查看该选项卡之前不要将任何内容加载到 GridView 中,如果不是,则删除它的内容(如果需要,当然保存回数据库。使用 TabContainer 的 ActiveTabChanged 事件将是此策略的关键。你为网格禁用 ViewState,但为容器保留它。

于 2008-10-31T12:07:24.687 回答
1

您使用的是 ASP.NET,因此只需将所有 4 个控件加载到一个多视图中,然后在回发时将可见的控件设置为已单击的按钮。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.multiview.aspx

于 2008-11-20T09:08:30.027 回答
-1

不要使用框架(或 iframe),除非你绝对必须......

我能想到使用 (i)frames 的唯一有效原因实际上是文件上传控件,我也不确定它在那里是否有效......

于 2008-11-20T09:00:20.103 回答