2016-02-11 3 views
0

Я пытаюсь запросить определенное поле в Sitecore при использовании сценария Ajax. Скрипт работает, если его жестко закодирован со значением:как запросить в sitecore

public void ProcessRequest(HttpContext context) 
{ 
    JOBject j = new JObject(
    new JProperty("test", 10), 
    new JProperty("test1", 20) 
    ); 

    context.Response.ContentType = "application/json"; 
    context.Response.Write(j.ToString(Formatting.None)); 

}

но то, что я пытаюсь сделать, это найти конкретное значение, когда есть вход. Таким образом, запрос будет искать определенный шаблонный шаблон, а затем, когда он найдет, что шаблон выполняет поиск в определенном поле, скажем «Книга», и если это поле соответствует значению, введенному пользователем, на том же элементе, оно отображает Поле «Номер книги», которое находится на том же элементе, который был создан в Sitecore.

  try { 
       $.ajax({ 
        type:"POST", 
        url:"/Test/Test.ajax.ashx", 
        data: {"field":$('#input').val()}, 
        cache:false, 
        dataType:'json', 
        success: function(data, status, xhr) { 
        if (data.test== '' || data.test1== '') alert('nothing found'); 
        else { 
         $('#test').html(data.test); 
         $('#test1').html(data.test1); 
        } 
        } 
       }); 
      }catch (e) { 
       alert(e.message); 
      } 
+0

Что происходит во втором? Это может вам помочь;) http://www.bugdebugzone.com/2014/06/tutorial-how-to-make-ajax-call-in.html. В Sitecore –

+0

Хотите ли вы искать поисковый запрос Sitecore для поиска по шаблону Id? Или помочь с этим вызовом ajax? Спасибо. –

+0

поиск по шаблону ID – Keith

ответ

0

Используя контекст поиска Lucene, вы можете использовать такой код. Это найдет все элементы, которые основаны на заданном идентификаторе шаблона.

using (var context = ContentSearchManager.GetIndex(Search.MasterIndex).CreateSearchContext()) 
     { 
      IQueryable<SearchResultItem> query = context.GetQueryable<SearchResultItem>(); 
      var computedLanguage = Sitecore.Context.Language.CultureInfo.Name.Replace("-", String.Empty); 

      SearchResults<SearchResultItem> results = null; 
      query = query.Where(x => x.TemplateId == new ID("{659B67C6-4810-4A22-B9E8-9463005113D6}")); 

      results = query.GetResults(); 
} 

Дальнейшая модификация этого продукта может быть дополнена фильтрами на пути.

query = query.Where(x => x.TemplateId == new ID("{659B67C6-4810-4A22-B9E8-9463005113D6}")) 
       .Where(x => x.Path.Contains("/Sitecore/Content")); 

Имеется несколько фильтров, которые можно использовать с объектом Linq.

Смежные вопросы