(9)在结果中筛选
2015-10-22 11:02
183 查看
问题
当排序和分页都不够帮用户去找到他们想要的结果时,另外一种帮助用户找到他们想要的结果的方式是根据特殊的规则过滤。
解决方案
添加新的links 允许使用预先的条件去过滤并且使用LINQ类库去在数据中过滤。
讨论
为了添加过滤的链接,需要在Book/Index view 和BookController中做改变。
改变的View和前两个秘方差不多。需要添加HTML去允许用户去选择他们想如何过滤内容。三个连接将被添加:全部的,新发布的和即将到来的。新发布的将被定义为最近2周发布的。即将到来的就被定义为还没发布的。
下边是新的 Book/Index view。有三个link。第一个link包含当前的sortOrder,剩下的2个link包含了新的变量filter。像分页link一样。如果当前的filter是你选中的话,把他显示成静态文本而不是link,其他的fitler设置为link的形式。确保用户更改排序规则时,filter也被维护。我们的Index view 要更新成如下:
双击代码全选
上一个秘方中创建的_Paging的Partial view也需要被更新。在下边的例子里,4个paging link 已经被更新成传递了当前的filter,page,和sortOrder。以下是_Paging更新后的代码:
双击代码全选
接下来我们要改变BooksController,在Index()Action 中更改代码。新接收一个filter变量。图书的列表将基于用户选择的filter选项被缩减。有2中方法实现filter。
再次使用动态Linq库 的where子句。
使用标准的Linq 和一个switch块去创建一个强类型的子句。
由于传统的filter link并不包含太多的条目,这个秘方,我们选择用第二种实现方法。这样做的好处是,我们不需要考虑SQL注入的问题,因为他是强类型的,并且不是动态的。
以下是BooksController部分代码:
双击代码全选
在上边的例子里,如果用户选择NewReleases 这个filter,这个搜索将返回今天或者14天之内出版的书。或者用户选择了Coming soon,搜索将返回即将出版的书。
当排序和分页都不够帮用户去找到他们想要的结果时,另外一种帮助用户找到他们想要的结果的方式是根据特殊的规则过滤。
解决方案
添加新的links 允许使用预先的条件去过滤并且使用LINQ类库去在数据中过滤。
讨论
为了添加过滤的链接,需要在Book/Index view 和BookController中做改变。
改变的View和前两个秘方差不多。需要添加HTML去允许用户去选择他们想如何过滤内容。三个连接将被添加:全部的,新发布的和即将到来的。新发布的将被定义为最近2周发布的。即将到来的就被定义为还没发布的。
下边是新的 Book/Index view。有三个link。第一个link包含当前的sortOrder,剩下的2个link包含了新的变量filter。像分页link一样。如果当前的filter是你选中的话,把他显示成静态文本而不是link,其他的fitler设置为link的形式。确保用户更改排序规则时,filter也被维护。我们的Index view 要更新成如下:
再次使用动态Linq库 的where子句。
使用标准的Linq 和一个switch块去创建一个强类型的子句。
由于传统的filter link并不包含太多的条目,这个秘方,我们选择用第二种实现方法。这样做的好处是,我们不需要考虑SQL注入的问题,因为他是强类型的,并且不是动态的。
以下是BooksController部分代码:
相关文章推荐
- (8)为列表结果分页
- (7)为结果排序
- (6)找回忘记的密码
- Node学习记录
- 配额不足问题
- 黑马程序员-java基础(八)-图形用户界面GUI
- 计算机采用 补码 存储数据
- IBM-AIX系统使用基本命令
- 批量删除redis key
- JS判断设备是否是移动端自动跳转到对应页面的简单代码
- (3)验证用户的输入
- (5)发送欢迎邮件
- (4)实现多语言
- (2)通过脚手架自动生成controller和view ----代码先行/数据库先行
- (转)scanf()总结
- (转)CSS浮动(float,clear)通俗讲解
- MvcSiteMapProvider配置使用
- 如何确定域在结构中的字节偏移量,怎样用结构成员名访问对应成员?
- error MSB6006: “LC.exe”已退出
- iOS 蓝牙编程