如何在 Sitecore 中进行查询
本文关键字:查询 Sitecore | 更新日期: 2023-09-27 18:34:11
我尝试在使用 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));
}
但我试图做的是在有输入时找到一个特定的值。因此,查询将搜索某个模板 ID,然后在找到该模板时搜索特定字段,例如"书籍",如果该字段与用户输入的值匹配,则在同一项目上,它将在同一项目上显示"书籍编号"字段,该字段位于在 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);
}
使用 Lucene 搜索上下文,您可以使用这样的代码。这将查找基于给定模板 ID 的所有项目。
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 对象一起使用。