【问题标题】:Using AJAX in Sitecore rendering with XSLT在带有 XSLT 的 Sitecore 渲染中使用 AJAX
【发布时间】:2016-08-17 07:34:37
【问题描述】:

我是 Sitecore 和 .NET 的新手。我有一个旧的现有项目,它基于 Sitecore 6.5,并通过 XSLT 和 .NET Framework 3.5 呈现内容。

现在我需要创建一个可以进行 AJAX 调用的页面,这样该页面就不需要刷新并且可以生成新内容。我对使用 PHP 的 AJAX 调用非常熟悉,但我对 .NET 中的调用很困惑。

我google了一下,发现大部分教程都是基于Razor视图渲染的。

谁能为我提供一张完整的图片,告诉我如何才能实现我的目标?

不知以下步骤是否正确:

  1. 根据匹配传入的 URL 参数创建一个 .xslt 以呈现不同的内容
  2. 创建 .ashx 以获取 .xslt 内容
  3. JavaScript AJAX 调用 .ashx 并将 xml 内容转换为 HTML

有什么可以借鉴的例子吗?

谢谢!

=============================================

更新: 我尝试了上面的流程,可以通过 AJAX 成功打印 Hello World。 但是,我不确定如何在以下具有不同参数的 .ashx 文件中从 XSLT 获取内容?

是否有任何 HttpPost/IsPostBack 可以帮助检查 .ashx 是否被 POST 方法访问?

【问题讨论】:

  • 您可以参考this 可以帮助您的问题。
  • 谢谢杰。我在上面更新了我的问题。我可以成功调用 AJAX,但在处理 XSLT 和 .ashx 之间的通信时遇到困难!
  • 我认为我无法具体回答您的问题,但可能值得查看 HttpContext 对象的文档,以帮助您了解如何使用通用处理程序:msdn.microsoft.com/en-us/library/…跨度>

标签: asp.net ajax sitecore asp.net-ajax sitecore6


【解决方案1】:

我终于通过以下步骤解决了这个问题。

  1. 创建一个 .ashx 来呈现站点核心内容。 我与 .ashx、.aspx 和 .asmx 进行了比较。似乎 .ashx 是最好的选择。

    using Sitecore.Configuration;
    using Sitecore.Data;
    using Sitecore.Data.Fields;
    using Sitecore.Data.Items;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace MYPROJECT.Web
    {
        /// <summary>
        /// Summary description for AjaxTest
        /// </summary>
        public class AjaxTest : IHttpHandler
        {
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/html";
                string ID = context.Request.QueryString["ID"];
                Database master = Factory.GetDatabase("master");
                Item source = master.GetItem("/sitecore/content/Home/MYPROJECT/gallery");
                Item[] items = source.GetChildren().ToArray();
                context.Response.Write(items[ID].Fields["image"].Value); 
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    

p.s 我从上面删除了一些验证码。

  1. 对 .ashx 的 JavaScript AJAX 调用。

        $j('#ajax_test').click(function(){
            $j.ajax({
                //type: 'POST',
                url: '/AjaxTest.ashx?ID='+$j('#inputunmber').val(),  
                //dataType: 'html',
                //data: form.find(':input').serialize(),
                success: function( response ) {
                    $j('.test_result').append(response);
                },
                error: function (xhr) {
                    alert("Error:" + xhr.responseText);
                }
            });  
        });
    

【讨论】:

    猜你喜欢
    • 2011-10-17
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多