我有一个我正在尝试优化的Web应用程序。某些控件隐藏在对话框式DIVs
中。所以,我希望只有当用户想要看到它们时才通过AJAX加载它们。这对于大多数基于文字的控件(各种菜单和小部件)来说都很好,但是当我拥有所谓的“脏”控件时 - 那些将大量信息写入ViewState
的控件,放入大量的CSS或脚本页面,需要大量的引用等 - 这些似乎不可能“移出页面”,特别是考虑到ASP.NET将如何对回发做出反应。
我正在考虑某种步骤,我覆盖Render,找到我要移出的位的标记,并将AJAX占位符放在那里,但不仅服务器开销看起来很极端,而且感觉就像一个完整的黑客。此外,这里的关键元素是包含带有验证控件的表单的对话框,我无法想象如何移动控件和所需的脚本。
在我狂热的想象中,我想这样做:
AJAXifier.AJAXify(ctlEditForm);
可悲的是,我知道这是一个梦想。
在不造成服务器过多负载的情况下,我能够真正接近快速简便的AJAX化吗?
答案 0 :(得分:4)
从Telerik查看RadAjax控件 - 它允许您避免使用UpdatePanels,并通过声明调用控件和应该控制的控件之间的直接关系来限制服务器和客户端之间来回传递的信息量当调用控件提交回发时,“Ajaxified”。
答案 1 :(得分:2)
我建议你这个周末走到你当地的书店,喝一杯咖啡,然后在曼宁出版社找到jQuery in Action。继续阅读商店中这本300页书的第一章,如果它与你产生共鸣,那就买吧。
我认为你会惊讶于jQuery让你轻松地执行你在这里所描述的内容。从ajax调用后台服务器,根据访问者的操作显示和隐藏div标签。你必须编写的代码量非常小。
有很多优秀的JavaScript库,这只是我喜欢的其中一个,而且它很容易上手。首先包含对带有标记的当前jQuery文件的引用,然后编写几行代码以与您的页面进行交互。
答案 2 :(得分:1)
第一步是让你的“脏”部分自包含用户控件
第二步是将这些控件嵌入您的消费页面
第三步是将每个用户控件标记包装在自己的Asp:UpdatePanel
中第四步是通过从属性中读取属性来确保您的控制获取所需的数据,这些属性针对预先存在的值检查视图状态。我知道这会让你的代码依赖丑陋的全局变量,但这是完成这项工作的快捷方法。
您的里程可能会有所不同。