基于筛选下拉选择创建投影或搜索的Orchard应用程序

9
我有一个简单的功能,我想添加到我的Orchard(1.6)网站上,但是我找不到任何教程或说明来完成它。 我有一个名为“Office”的自定义类型,每个办公室都有一个称为“State”的自定义字段,指示办公室位于哪个州。 我实际上是在代码中设计我的Offices作为自定义部分,具有诸如State之类的特定属性,但是我“认为”它与通过管理界面将State添加到Office内容部分相同。
现在,我可以创建一个基本投影,以显示所有带有“Office”类型的内容的简单过滤器,以显示所有办公室。 但是,现在我想做的是在页面顶部拥有一个下拉列表,其中包含所有50个州的列表,显示“Filter by: [-SELECT STATE-] ”,当用户选择一个州时,页面应刷新并仅显示该州的办公室。
这就是我卡住的地方。 我应该通过代码完成还是可以通过Admin UI完成? 如果通过代码,我应该像Orchard.Search模块一样对其进行建模(我尝试过,但我完全迷失了)。 如果我可以通过UI完成,那么我使用投影吗? 如果是这样,我是否必须创建50个单独的投影(每个州一个)? 那似乎非常耗时,难以维护。
非常感谢您的帮助!
FYI,位于 http://ktowneric.com/listings/search (使用Orchard)的站点与我正在寻找的内容非常相似,并且开发人员表示他使用了投影,但是我无法弄清楚他是如何做到的。
1个回答

13

你肯定可以使用投影。如果你注意到在你所引用的页面上使用搜索功能时,输入被形成为查询字符串值。你可以使用令牌从查询字符串中获取值来在你的投影筛选器中使用。例如,如果你正在使用字段,那么你只需要添加一个该字段的筛选器,在值字段中使用 {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小部件中以尝试。


2
我希望在我翻遍所有源代码并自己解决如何执行HQL查询之前就找到了这个答案... - Henry C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接