0

使用 Orchard 1.6,我设置了一个表单,允许用户上传图像(使用字段)。

我希望用户能够导航到搜索页面(在仪表板上),允许他们搜索与此表单相关的所有上传。请记住,该用户将具有一定的权限,因此他们可以访问仪表板(但不能访问“内容”部分,该部分允许用户搜索所有内容项)。另外,我只希望列出此内容部分的内容项。

我已经设置了一个新的控制器和一个视图,因此用户可以访问仪表板上的空白页面。在该函数中,我想显示该内容类型的所有内容项的列表,并包含一个搜索功能。

问题是,在我使用自己创建的表(例如,“供应商”)之前,我已经这样做了,如果匹配,则使用循环添加到另一个列表,然后显示第二个列表。

但是,内容项将contentItemRecord作为列保存到它们自己的位置:

<Data><AddressPart>
      <Name></Name>
      <AddressLine1></AddressLine1>
      <AddressLine2></AddressLine2>
      <Zipcode></Zipcode>
      <City></City>
      <Country></Country>
      </AddressPart>
</Data>

如何使用它进行搜索?

4

1 回答 1

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();
    }
}
于 2013-08-09T17:35:09.827 回答