9

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

现在,我可以创建一个基本投影来显示所有办公室,并使用“具有办公室类型的内容”的简单过滤器来显示所有办公室。但是,我现在要做的是在页面顶部有一个下拉列表,上面写着“过滤方式:[-SELECT STATE-] ”,其中包含所有 50 个状态的列表。当用户选择一个州时,页面应该刷新并只显示该州的办公室。

这就是我卡住的地方。我应该通过代码执行此操作,还是可以通过管理 UI 执行此操作?如果通过代码,我是否应该在 Orchard.Search 模块之后对其进行建模(我试图这样做,但我完全迷失了)。如果我可以通过 UI 做到这一点,我是否使用投影?如果是这样,我是否必须创建 50 个单独的投影(每个州一个)?创建和维护这似乎非常耗时。

任何帮助是极大的赞赏!

仅供参考,http: //ktowneric.com/listings/search上的网站(使用 Orchard)与我正在寻找的非常相似,开发人员说他使用了预测,但我似乎无法弄清楚他是如何做到的它。

4

1 回答 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 小部件中进行试用。

于 2012-11-16T02:32:27.450 回答