Orchardcms Orchard基于筛选的下拉选择创建投影或搜索

Orchardcms Orchard基于筛选的下拉选择创建投影或搜索,orchardcms,Orchardcms,我想,我有一个简单的功能,我正试图添加到我的Orchard(1.6)网站上,但我找不到任何关于如何操作的教程或说明。我有一个名为“Office”的自定义类型,每个Office都有一个名为“State”的自定义字段,指示Office所处的状态。实际上,我将我的办公室设计为代码中的一个自定义部分,其中包含特定属性,例如其中的状态,但我“认为”这与我通过管理界面将状态添加为Office内容部分中的一个字段是一样的 现在,我可以创建一个基本投影来显示所有办公室,并使用一个简单的过滤器“Content w

我想,我有一个简单的功能,我正试图添加到我的Orchard(1.6)网站上,但我找不到任何关于如何操作的教程或说明。我有一个名为“Office”的自定义类型,每个Office都有一个名为“State”的自定义字段,指示Office所处的状态。实际上,我将我的办公室设计为代码中的一个自定义部分,其中包含特定属性,例如其中的状态,但我“认为”这与我通过管理界面将状态添加为Office内容部分中的一个字段是一样的

现在,我可以创建一个基本投影来显示所有办公室,并使用一个简单的过滤器“Content with type Office”来显示所有办公室。但是,我现在想做的是在页面顶部有一个下拉列表,上面写着“筛选依据:[-SELECT STATE-]”以及所有50个州的列表。当用户选择某个状态时,页面应刷新并仅显示处于该状态的办公室

这就是我被困的地方。我应该通过代码来实现这一点,还是可以通过管理UI来实现这一点?如果通过代码,我是否应该按照Orchard.Search模块(我试图这样做,但我完全迷失了方向)对其进行建模。如果我可以通过用户界面来完成,我会使用投影吗?如果是这样,我是否必须创建50个单独的预测(每个州一个)?这似乎是非常耗时的创建和维护

非常感谢您的帮助


仅供参考,位于(使用Orchard)的站点与我正在寻找的非常相似,开发商说他使用了投影,但我似乎不知道他是如何做到的。

你肯定可以使用投影。如果在引用的页面上使用搜索功能时注意到,则输入将形成查询字符串值。您可以使用标记从查询字符串中获取值,以便在投影过滤器中使用。例如,如果您使用的是您所说的字段,那么您只需为该字段添加一个过滤器,并在值字段中使用{Request.QueryString:State}。或者,将“State”替换为用于查询字符串值的任何键

这就解决了你的投影问题。你将需要建立一个搜索表单,看起来像这样

<form action="/search-results" method="Get">
  <select name="State">
     <option value="OH">Ohio</option>
     ...all the states...
  </select>
  <input type="submit" value="Search" />
</form>

俄亥俄州
…所有的州。。。

“/search results”可以是投影页面或任何显示投影小部件的内容。您可以将表单构建为一个小部件,放置在某处,或者出于测试目的,您可以将此html粘贴到一个html小部件中进行尝试。

…我希望在深入研究所有源代码并解决如何执行HQL查询之前找到这个答案。。。