使用Orchard 1.6,我设置了一个表单,允许用户上传图像(使用字段)。
我希望用户能够导航到搜索页面(在仪表板上),以便他们搜索与此表单相关的所有上传内容。请记住,此用户将拥有一些权限,因此他们可以访问仪表板(但无法访问“内容”部分,这允许用户搜索所有内容项)。此外,我只希望列出此内容部分的内容项。
我已经设置了一个新控制器和一个视图,因此用户可以访问仪表板上的空白页面。在该函数中,我想显示该内容类型的所有内容项的列表,并包含搜索功能。
麻烦的是,在我使用自己创建的表(例如“供应商”)之前我已经完成了这项工作,如果匹配则使用循环添加到另一个列表,然后显示第二个列表
但是,内容项会作为列保存到自己的contentItemRecord
:
<Data><AddressPart>
<Name></Name>
<AddressLine1></AddressLine1>
<AddressLine2></AddressLine2>
<Zipcode></Zipcode>
<City></City>
<Country></Country>
</AddressPart>
</Data>
如何使用它进行搜索?
答案 0 :(得分:1)
我会使用Orchard HQL API,我发现在需要某种搜索过滤器可能会发生变化的情况下,它非常适合。如果过滤器(如果他们可以按地址或城市搜索 )不改变,我只会使用常规的Orchard API。以下是使用HQL API的示例:
public class ExampleService : IExampleService
{
private readonly IContentManager _contentManager;
public ExampleService
(
IContentManager contentManager
)
{
_contentManager = contentManager;
}
public IEnumerable<ContentItem>(){
IHqlQuery query = _contentManager.HqlQuery().ForType("YourContentType");
//You can also make joins on content parts and set criteria
Action<IAliasFactory> selector = alias => alias.ContentPartRecord<ExamplePartRecord>();
//Put any type of filter you want here, you can use conjunctions as well as disjunctions.
Action<IHqlExpressionFactory> filter = x => x.IsNotNull("Id");
query = query.Where(selector,filter);
return query.List();
}
}