AJAX WebControls 的简单方法
Posted
技术标签:
【中文标题】AJAX WebControls 的简单方法【英文标题】:Easy way to AJAX WebControls 【发布时间】:2010-09-05 08:33:27 【问题描述】:我有一个正在尝试优化的网络应用程序。一些控件隐藏在对话框样式DIVs
中。所以,我想让它们仅在用户想要查看它们时通过 AJAX 加载。这对于大多数基于文字的控件(各种菜单和小部件)来说很好,但是当我有我所谓的“脏”控件时——那些向ViewState
写入大量信息的控件,在页面上放置大量 CSS 或脚本, 需要大量引用等 - 这些似乎不可能“移出页面”,尤其是考虑到 ASP.NET 将如何对回发做出反应。
我正在考虑某种步骤,我覆盖 Render,找到我想要移出的位的标记并将 AJAX 占位符放在那里,但不仅服务器开销看起来很极端,而且感觉就像一个完整的 hack。此外,这里的关键元素是包含带有验证控件的表单的对话框,我无法想象如何移动控件和它们所需的脚本。
在我***的想象中,我想这样做:
AJAXifier.AJAXify(ctlEditForm);
很遗憾,我知道这是一场梦。
在不对服务器造成过多负载的情况下,我能真正实现快速简单的 AJAX 化吗?
【问题讨论】:
@tags2k - 如果有帮助,我认为您可以许可$799 的控制集(减去订阅和源代码) 【参考方案1】:查看 Telerik 的 RadAjax 控件 - 它允许您避免使用 UpdatePanel,并通过声明调用控件和应为“Ajaxified”的控件之间的直接关系来限制服务器和客户端之间来回传递的信息量" 当调用控件提交回发时。
【讨论】:
这正是我想要的,不幸的是它是 999 美元,根本不在预算之内。除非有人有更便宜的选择,否则我会将您的帖子标记为答案! @Rob:我很自豪地说,整个解决方案中没有 UpdatePanel,尽管有它们,而且它们发送的效率非常低下。试图清理脏控件的问题在于,违规者不是我的——他们是微软的!【参考方案2】:我建议你这个周末去当地的书店,喝杯咖啡,看看 Manning Press 的 jQuery in Action。来吧,在商店里阅读这本 300 页的书的第一章,如果它引起你的共鸣,就买它。
我认为您会惊讶于 jQuery 让您执行您在此处描述的内容的简单程度。从后台对服务器的 ajax 调用,到根据访问者的操作显示和隐藏 div 标签。您必须编写的代码量非常少。
有很多优秀的 javascript 库,这只是我喜欢的其中一个,而且它真的很容易上手。首先使用标签包含对当前 jQuery 文件的引用,然后编写几行代码来与您的页面进行交互。
【讨论】:
【参考方案3】:第一步是让你的“脏”块独立的用户控件
第二步是将这些控件嵌入到您的消费页面上
第三步是将每个用户控件标签包装在自己的 Asp:UpdatePanel 中
第四步是通过读取属性来确保您的控件获得所需的数据,这些属性会检查视图状态中是否存在预先存在的值。我知道这会使您的代码依赖于丑陋的全局变量,但这是完成此任务的快速方法。
您的里程可能会有所不同。
【讨论】:
以上是关于AJAX WebControls 的简单方法的主要内容,如果未能解决你的问题,请参考以下文章
DropDownList (WebControls) 上的默认 .NET 清理