使用ASP.NET MVC2,如何使过滤器与hackable url一起使用?

时间:2010-02-14 06:37:18

标签: asp.net-mvc filtering

考虑开始New Egg's电子商务向下钻取模型,导航栏上的关键字链接会进一步限制每个选择的当前显示的产品列表。

我用这样的路线设置了一个寻找房子:

http://{website.com}/{Housetype}/{PriceLow}-{PriceHigh}
http://mysite.com/Residential/180000-230000
http://mysite.com/Commercial/300000-500000

但是现在我想在侧面导航上添加进一步限制内容的链接:

1 Bedroom
2 Bedroom
4 Bedroom

1-4 Acres
4-10 Acres
10+ Acres

如何使用MVC传递和维护点击之间的选择?我认为我的选择是:

  1. 继续在查询字符串中添加命名参数,例如/ {acres}:{low} - {high},但这将要求所有参数都存在,我将无法选择多个条件,或者我点击了最大查询字符串长度。
  2. 一旦我知道了{housetype}和{price range},然后转向一个完全不同的策略,可能会传递一个对象(如DTO),它将会是.AddCriteria(“Acres”,“。gt。”,“1” ); .AddCriteria(“Acres”,“。lt。”,“4”)等......听起来很复杂
  3. 别的什么?
  4. 再次,寻找起始答案,最常见的方式(几乎是设计模式方式)从客户端向ASP.NET MVC发送过滤器和排序条件。链接也很有帮助。

1 个答案:

答案 0 :(得分:1)

几周前我构建了一个URL表达式解析器,它将根据URL中的表达式过滤IQueriable。 Here's a blog post for the explanation。基本上你可以构建自己的表达式并将它们插入到解析器中...或者你可以使用/ price-greaterthan-3 / price-lessthan-4000 / acres-lessthan-10 /

Here's a link to the code

相关问题