多条件筛选下的Url处理问题

scyyzgxh 2015-05-24 11:34:52
首先多条件筛选大家都知道,先上图:

此图中有不少属性,属性对应一些值,熟悉cms的同学都知道,其实无论是属性还是属性值都应该能从后台动态添加的(这个问题不在此讨论),然后前台显示时需要进行点击筛选,筛选实现的功能无非是接收参数,然后拼接sql语句,然后我现在在这里想说的是拼接后sql处理的问题,一般来说sql形式多种多样,例:
1.http://search.jd.com/search?keyword=%E8%A1%AC%E8%A1%AB%20%E5%A5%B3&enc=utf-8&qrst=1&ps=addr&rt=1&stop=1&sttr=1&ev=8635_106756%40&uc=0#select
最原始,最好处理,看去也大概知道是什么参数,但太长了,听说也不利于seo?
2.http://www.51aspx.com/CodeList/1!0!0!0!0!0!0!0!0!-1i4
应该是用了重写,地址变短,但仍然不够好看,并且无论有没有选那一项都好,也会带默认参数
3.http://www.58dm.com/list/guochan-2015-rexue
大概也是用了重写,地址变短,一看就知道是 国产,2015,热血,相比上面2的地址处理来说我认为好些,这个在不选某项的情况下,不会再带多余的参数,选哪个带哪个。(我觉得这种地址最好了,这里-应该可以换成/)
问题是这里,看两个对比地址:
http://www.58dm.com/list/guochan-rexue
http://www.58dm.com/list/guochan-guoyu
两地址的区别在于最后那个参数,一个是剧情是热血,一个是配音是国语。我现在的重写如果用来这里判断(没用流行的重写组件,自己拦截了一下正则处理),单从拦截的数据来看,是无法知道rexue到底是剧情?还是配音?还是状态还是年份?的值?
有人说接收参数之后,遍历分类,找到rexue此值对应的属性,再查找数据,这,到底不爽。。。。
各位判断一下,还是说如果用rewrite组件就能识别到底这个参数是什么?
帖子比较长,我描述得可能也不清楚,各位尽力耐心看完,有会的帮下,谢谢了。。。
...全文
299 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
scyyzgxh 2015-05-25
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
你描述的 url 参数实际只是 2 种: 1、传统的带识别标志(变量名)的:qrst=1、ps=addr 可被 web 服务器识别和解析,变量的含义与位置无关。只需通过变量名就可知道是否存在和值是多少 2、类 path_info 的。 path_info 是以 / 做分节符,你示例的分节符还有 ! 和 - 由于没有明确的含义标识,所以是以变量在序列中的位置来确定含义的 对于 http://www.58dm.com/list/guochan-rexue http://www.58dm.com/list/guochan-guoyu 你只能通过词义分析来判别需求。但如果在不同分类中有相同的单词的话..... 你至少需要给不常用的单词组合附加识别信息 这与 MVC 的路由没什么关系。 你都不知道该往哪里走,机器又如何能知道?
我也没说和路由有关,我这里只说重写,是上面的同学说这是路由,我顺带问说下/// 整体分析的很有道理,我也是这么想的 你只能通过词义分析来判别需求,这样也就是说,在接收到这个单词后需要遍历一次找到它到底是什么的值是吗? 上面两个地址确实是被程序有效区分开来了,可以点击看下它的筛选,我的意思就是说,它是怎么做的 如果没有实际可行的办法的话,只能是在拼接sql之前,再查下数据库,这个值可能是什么了,当然也避免不了,如果有重复值,会有问题产生。。。
scyyzgxh 2015-05-25
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
asp.net4开始Webform也可以用route了
这个有听说,不过用了就能解决上面的问题吗? http://www.58dm.com/list/guochan-rexue http://www.58dm.com/list/guochan-guoyu 能知道后面这个是剧情、配音、年号还是连载的参数值? 不过,如果不用mvc怎么样做呢?
  • 打赏
  • 举报
回复
asp.net4开始Webform也可以用route了
xuzuning 2015-05-25
  • 打赏
  • 举报
回复
你描述的 url 参数实际只是 2 种: 1、传统的带识别标志(变量名)的:qrst=1、ps=addr 可被 web 服务器识别和解析,变量的含义与位置无关。只需通过变量名就可知道是否存在和值是多少 2、类 path_info 的。 path_info 是以 / 做分节符,你示例的分节符还有 ! 和 - 由于没有明确的含义标识,所以是以变量在序列中的位置来确定含义的 对于 http://www.58dm.com/list/guochan-rexue http://www.58dm.com/list/guochan-guoyu 你只能通过词义分析来判别需求。但如果在不同分类中有相同的单词的话..... 你至少需要给不常用的单词组合附加识别信息 这与 MVC 的路由没什么关系。 你都不知道该往哪里走,机器又如何能知道?
scyyzgxh 2015-05-24
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
你这个不就是route么?
route?难道是mvc的路由?我现在没用mvc,就是普通的从IhttpModel中拦截而已 重点是在第三问:如何区别出它是什么属性的属性值?
scyyzgxh 2015-05-24
  • 打赏
  • 举报
回复
发布后发现有些错漏和不突出,再来个: 首先多条件筛选大家都知道,先上图: 此图中有不少属性,属性对应一些值,熟悉cms的同学都知道,其实无论是属性还是属性值都应该能从后台动态添加的(这个问题不在此讨论),然后前台显示时需要进行点击筛选,筛选实现的功能无非是接收参数,然后拼接sql语句,然而我现在在这里想说的是URL处理的问题,一般来说URL形式多种多样,例: 1.http://search.jd.com/search?keyword=%E8%A1%AC%E8%A1%AB%20%E5%A5%B3&enc=utf-8&qrst=1&ps=addr&rt=1&stop=1&sttr=1&ev=8635_106756%40&uc=0#select 最原始,最好处理,看去也大概知道是什么参数,但太长了,听说也不利于seo? 2.http://www.51aspx.com/CodeList/1!0!0!0!0!0!0!0!0!-1i4 应该是用了重写,地址变短,但仍然不够好看,并且无论有没有选那一项都好,也会带默认参数 3.http://www.58dm.com/list/guochan-2015-rexue 大概也是用了重写,地址变短,一看就知道是 国产,2015,热血,相比上面2的地址处理来说我认为好些,这个在不选某项的情况下,不会再带多余的参数,选哪个带哪个。(我觉得这种地址最好了,这里-应该可以换成/) 问题是这里,看两个对比地址: http://www.58dm.com/list/guochan-rexue http://www.58dm.com/list/guochan-guoyu 两地址的区别在于最后那个参数,一个是剧情是热血,一个是配音是国语。我现在的重写如果用来这里判断(没用流行的重写组件,自己拦截了一下正则处理),单从拦截的数据来看,是无法知道rexue到底是剧情?还是配音?还是状态还是年份?的值? 有人说接收参数之后,遍历分类,找到rexue此值对应的属性,再查找数据,这,到底不爽。。。。 各位判断一下,还是说如果用rewrite组件就能识别到底这个参数是什么? 帖子比较长,我描述得可能也不清楚,各位尽力耐心看完,有会的帮下,谢谢了。。。
  • 打赏
  • 举报
回复
你这个不就是route么?

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧