2016-08-17 5 views
0

Я новичок в Sitecore и .NET. У меня есть старый существующий проект, основанный на Sitecore 6.5 и отображаемый контент XSLT с .NET Framework 3.5.Использование AJAX в рендеринг Sitecore с XSLT

Теперь мне нужно создать страницу, которая может сделать вызов AJAX, чтобы страница не нуждалась в обновлении, и можно было создать новый контент. Я хорошо знаком с AJAX-вызовом с PHP, но я довольно смущен тем, что есть в .NET.

Я искал googled и нашел, что большая часть учебника основана на рендеринге Razor.

Может ли кто-нибудь предоставить мне полную картину, что я могу сделать для достижения своей цели?

Интересно, если выполняются следующие шаги правильны:

  1. Создать .xslt для оказания различного содержания на основе соответствия параметра URL, который передается в
  2. Создать .ashx, чтобы получить содержание .xslt
  3. JavaScript AJAX вызов .ashx и преобразовать содержимое XML в HTML

Есть примеры, которые я могу следовать?

Спасибо!

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

Обновление: Я пробовал вышеуказанный поток и успешно распечатывал Hello World by AJAX. Однако я не уверен, как получить контент из XSLT в следующем файле .ashx с другим параметром?

И есть ли HttpPost/IsPostBack, который может помочь проверить, что .ashx посещен методом POST?

enter image description here

+0

Вы можете обратиться [это] (http://stackoverflow.com/questions/1349118/jquery-ajax-post-results-in-500-internal-server-error) вопрос, который может помочь вы. –

+0

Спасибо, Джей. Я обновил свой вопрос выше. Я могу позвонить AJAX успешно, но сталкиваюсь с трудностями при обработке связи между XSLT и .ashx! – HUNG

+0

Не думаю, что я могу конкретно ответить на ваш вопрос, но, возможно, стоит посмотреть документацию для объекта HttpContext, чтобы помочь вам понять, как работать с общим обработчиком: https://msdn.microsoft.com/en- нас/библиотека/system.web.HttpContext (v = vs.110) .aspx –

ответ

0

я, наконец, решить вопрос со следующими шагами.

  1. Создайте .ashx для отображения содержимого sitecore. Я по сравнению с .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. JavaScript AJAX call to .ashx.

    $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); 
          } 
         }); 
        }); 
    
Смежные вопросы