问题描述
我的Web应用程序中有一个由Sitecore布局和许多子布局组成的特定页面(Sitecore内容项)。其中一个子布局是我希望在单击某个按钮后刷新的用户控件。我只希望刷新该子布局,页面的睡觉保持不变(这里是典型的AJAX情况)。当我的所有Sitecore内容项目都直接与Web应用程序中的整个页面(有子布局)相关时,我如何使用Sitecore实现这一点?在我的例子中,我只想使用Ajax返回特定的单个子布局的内容。使用Sitecore处理这种Ajax情况的最佳实践是什么?我正在使用Sitecore 6.5。
推荐答案
有许多选项可用于实现异步行为。所有这些实际上都与Sitecore没有直接关系,但是,有一些Sitecore特定的事情需要注意,我在下面突出显示了。
UpdatePanel控件
如果您正在执行一些微不足道的操作,而超快性能不是问题,只需包装您的按钮(以及您需要的任何其他.NET控件 如更新)中的UpdatePanel Control。你还需要放下 将ScriptManager
控件放到靠近内部顶部的基本布局中<form>
元素。注意:使用此方法时,您需要确保您的子布局没有启用缓存,否则您的按钮将无法正确回发创建您自己的Web服务
在此场景中,有许多客户端框架可用于实现相同的结果。我的首选方法是使用jQuery连接到客户端按钮单击事件,准备一个请求对象,然后将其发布到服务器(获取更新客户端所需的信息)。以下是许多与Sitecore一起使用的Web服务选项,使您可以访问
Sitecore.Context
和所有后续Sitecore API。创建接受参数作为查询字符串的空ASPX Web表单。在
Page_Load
方法中,对参数做一些工作,并使用Response.Write()
直接写入响应。AJavaScriptSerializer
对于序列化到JSON很方便,只需确保设置Response.ContentType = "text/javascript";
创建ASMX Web Service并使用
[WebMethod]
修饰您的方法(如果需要访问会话数据,则使用[WebMethod(EnableSession = true)]
)。使用MVC控制器(例如:ASP.NET Web Api)创建API。我认为在Sitecore 6.5中有一些需要解决的问题,如here所述。
这篇关于如何使用Sitecore使用Ajax进行部分页面更新?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!