【发布时间】:2010-08-24 16:18:36
【问题描述】:
我认为自己在 Web UI 开发方面知识渊博,在过去的四年中我学到了很多关于 ASP.Net Web 表单的知识,但我仍然没有找到通过 Ajax 更新页面部分的好方法.我已经完成了几种不同的方法,这些方法基本上涉及由某种 .aspx 页面或处理程序加载的用户控件。这很好用,但不是很通用,并且通常会遇到任何甚至中等复杂的 ViewState 问题。
我会更早跳到 UpdatePanel,但微软的 JavaScript 代码完全是垃圾。有没有人有任何好的策略来加载/更新/刷新 Web 表单的部分而不使用 UpdatePanels?或者有没有人有任何关于使用 UpdatePanels 来解决一些前端代码蹩脚问题的技巧?
更新(澄清)
这是一个示例情况,说明我想要做的更清楚。在靠近页面底部的主页上,我们有一些包含不同内容的选项卡。每个选项卡的内容主体都有针对某些不同用户类型的不同内容。在成千上万的主页访问者中,我们每天可能会点击任何选项卡。尽管有这些数据,我们的经理仍然希望在那里有标签。因为每个选项卡正文中都有很多HTML内容,所以我想在单击选项卡时加载选项卡的内容。解决方案显然是使用ajax;但是,当单击选项卡时,您将 HTML/控件放在哪里以加载 HTML。我可以将每个选项卡的内容放在它自己的 apsx 页面中(例如 /home/tabs1.aspx),但是如果我们愿意的话,我们不能轻易地将内容嵌入到页面中。我可以将内容放在它自己的用户控件中并创建一个 HttpHandler 或加载它的页面,但这会导致在更复杂的页面上查看状态问题。我可以在函数中硬编码 HTML,然后将其设置为文字或在 ajax 请求调用它时在处理程序中返回 HTML。这些解决方案中的每一个都有效。有些比其他的更理想(第三个是可怕的关注点分离,虽然我以前见过)。 UpdatePanel 提供了最好的解决方案,因为它们允许您将内容放在标记的正确部分,而无需单独的文件。我对 UpdatePanel 的问题是它们要求您使用 Microsoft 的 javascript 库。有没有像 UpdatePanel 一样工作但不使用 UpdatePanel 的解决方案?
我正在尝试解决其他几个用例:
- 页面上的框在加载时包含内容,但每 30 秒更新一次
- 我只想在用户将鼠标悬停在某个版块上时才加载的大型标头导航菜单
- 当用户单击链接时,您的表单会显示在灯箱中。 (这可能会导致视图状态问题)
【问题讨论】:
标签: asp.net ajax updatepanel webforms