Asp.net mvc Sitecore 8 MVC Glass查询数据源
在使用glass时,Sitecore 8 MVC似乎不支持查询数据源(例如:query:…)。我想创建一个相对路径,以便分支模板在创建时指向正确的数据源。有没有一种方法可以通过Sitecore的查询生成器实现这一点?我看到了自定义查询选项,其中可以指定路径,但似乎无法执行任何操作。我想我可能会在模型被玻璃绑定之前添加一个管道处理器,将以Asp.net mvc Sitecore 8 MVC Glass查询数据源,asp.net-mvc,sitecore,sitecore8,glass-mapper,sitecore-mvc,Asp.net Mvc,Sitecore,Sitecore8,Glass Mapper,Sitecore Mvc,在使用glass时,Sitecore 8 MVC似乎不支持查询数据源(例如:query:…)。我想创建一个相对路径,以便分支模板在创建时指向正确的数据源。有没有一种方法可以通过Sitecore的查询生成器实现这一点?我看到了自定义查询选项,其中可以指定路径,但似乎无法执行任何操作。我想我可能会在模型被玻璃绑定之前添加一个管道处理器,将以查询:开头的数据源更改为解析路径,并沿着管道参数传递该路径。您可以将数据源查询添加到子布局或呈现数据源布局字段。您需要将新的处理器添加到getRenderingD
查询:
开头的数据源更改为解析路径,并沿着管道参数传递该路径。您可以将数据源查询添加到子布局
或呈现
数据源布局
字段。您需要将新的处理器
添加到getRenderingDatasource
管道
。我自己在分支模板上使用了它来创建到正确数据源的相对路径
您的查询:.
需要在子布局/渲染的数据源位置
中定义,并使用祖先或自身
创建相对路径并遍历树以查找包含数据源的父项
query:.ancestor-or-self:: *[@@templatename = 'home']/*[@@templatename = 'storage']/*[@@templatename = 'articles']
处理器将需要使用GetRenderingDatasourceArgs
。这些辩论将为你提供几乎所有你需要的东西。基本上,您需要获得在数据源位置中编写的查询:。
args.RenderingItem["Datasource Location"];
将查询的开头替换为上下文项路径(使其相对),然后调用以获取项
private IEnumerable<Item> GetDatasourceLocationsFromQuery(string query)
{
string queryPath = query.Replace("query:.", args.ContextItemPath);
return args.ContextDatabase.SelectItem(queryPath);
}
private IEnumerable GetDatasourceLocationsFromQuery(字符串查询)
{
字符串queryPath=query.Replace(“query:。”,args.ContextItemPath);
返回args.ContextDatabase.SelectItem(queryPath);
}
然后,这将返回作为数据源父项的匹配项。我不确定是否完全理解。Sitecore 8 MVC支持数据源查询,这与Glass无关,Glass本身就是。只要您的查询被解析为正确的项,那么该项就应该传递给Glass。你能提供你正在使用的相同的代码/分支结构吗?也许我只是用错了。您知道如何为视图渲染的数据源提供一个查询,以获取一个项目,该项目是当前项目的子项,名称为Test Content吗?好的,这对我来说很有意义。我想我可以做一个检查,看看是否从query:
开始。如果确实如此,我将删除查询:
,并将其作为Sitecore查询运行,并返回从中选择的第一项。根据经验,它确实需要查询:。而不是询问:
query:.ancestor-or-self:: *[@@templatename = 'home']/*[@@templatename = 'storage']/*[@@templatename = 'articles']