我现在浏览了许多论坛来回答一个非常基本的问题,但令我惊讶的是,我找不到大多数网站使用的非常基本的设计的一个很好的例子。我对编程并不陌生,但不久前我用它做了大量工作,而且我对 ASP.NET 完全陌生。我目前正在使用 VS2010 并从头开始构建一个 ASP.NET MVC 3 站点。该站点启用了 AJAX,我目前同时使用根据控件进行左窗格导航和 TabContainer 进行顶部选项卡导航。
到目前为止,所有内容都包含在一个母版页中,基本问题是在左侧/顶部菜单中选择导航链接时,整个页面会重新加载并破坏导航菜单的状态。此外,完全没有必要的闪烁,我认为没有理由重新加载整个页面,我只想更改“主要区域”的内容而不触摸导航菜单。
网站结构目前由<DIV>
元素构成,这使得设计非常简单,CSS 文件的结构提供了极大的灵活性和控制力。根据建议,我想尽我所能避免过时的解决方案,例如 IFrame。我想为如何以现代和灵活的方式完成这项工作奠定基础,并尽可能减少妥协。这很重要,因为我启动的系统可能会在通过多个决策论坛后由整个团队进行工作。
正如我所说,我已经广泛浏览了解决方案,并发现了许多关于母版页概念的解释,这些解释让我输入了我的问题似乎是什么:我的导航菜单绑定到母版页,母版页实际上只是紧密连接到内容页面的“用户控件”,当我选择导航链接时,这些合并页面会重新加载。这是不应该发生的,这是不可接受的。
我还尝试将导航面板的加载包装在“!IsPostBack”条件下,但我得出的结论是问题不在于 PostBack:s,问题在于单击链接/树链接/手风琴窗格在左侧菜单中确实请求了一个全新的页面,因此所有内容都重新加载并且以前的状态丢失了。当然,我可以编写代码来存储状态并为“新页面”提供最后的状态,如果没有其他可能,这将是一个解决方案;但我真的不想重新加载整个页面;我只想重新加载“主要区域”以减少带宽需求并避免闪烁。
所以我搜索了只更新“主要内容内容占位符”的方法,我看到很多关于这个主题的问题,但很少有好的答案,尤其是当我想更改主要区域中的整个 aspx 页面时,不仅仅是更新控件的数量(或动态创建新控件/删除旧控件等)。想要改变整个 aspx 页面的原因是不同的页面会提供不同的功能,仅仅通过一些控件的操作是不够的,但主要区域应该加载另一个 aspx 页面——从开发组织的角度来看,这也是很好,因为不同的开发人员可以在完整的应用程序中处理不同的功能领域。
我愿意放弃整个母版页策略,或者使用嵌套母版页,或者将母版页包装在非母版页中,或者使用更新面板,或者使用跨页发布等。但是我没有找到可以作为开始使用的实际可行的示例。
而且,由于目前这基本上只是客户端更新,我真的不明白为什么这会变得如此棘手。
所以,很简单地说我的问题是:你认为设计一个网站的基本策略是什么这个区域而不是整个站点。
如果您可以向我提供对此的一些描述,当然最好是一些演示站点,其中只有部分站点更新为新页面而不是整个页面 - 就这么简单!- 当这将是非常受欢迎的时候。现在花了三天时间浏览一个好的推荐,我变得越来越困惑...... :-(
将非常感谢指导。
/DT