基础才是重中之重~你是否真正在用MVC路由功能~再续
在写完第一篇和第二篇MVC路由文章后,我觉得还不够,还应该再具体一点说一下分类筛选与MVC路由,如何快速完成一个分类筛选,分类筛选的高亮如何实现,以及MVC路由参数的顺序对参数值的影响等等。
今天要说的:
一 MVC路由参数的顺序对参数值的影响
二 快速完成一个分类筛选
三 根据RequestContext.RouteData来实现高亮的菜单
一 MVC路由参数的顺序对参数值的影响
我们看这两个路由的规则,几乎是相同的,但有个地方你是否注意到,在路由规范中grade与subject参数的顺序是不同的,这个参数顺序在程序中启到什么作用呢?经过实验证明,参数靠后的值会在routedata字典中保留,即当你改变subject时,grade的值会被保留,而当你改变grade时,subject将会被进行初始化,这也是正常的。
而切换科目时,年级信息会被保留
原来就是grade在RouteData字典中的索引排在subject这
二 快速完成一个分类筛选
代码如下:
<div class="banner"> <span id="grade0">@Html.ActionLink("全部", "About", new { grade = 0 })</span>
<span id="grade1">@Html.ActionLink("一年级", "About", new { grade = 1 })</span>
<span id="grade2">@Html.ActionLink("二年级", "About", new { grade = 2 })</span><hr /> <span id="subject0">@Html.ActionLink("全部", "About", new { subject = 0 })</span> <span id="subject15">@Html.ActionLink("语文", "About", new { subject = 15 })</span> <span id="subject16">@Html.ActionLink("数学", "About", new { subject = 16 })</span> <hr /> </div>
三 根据RequestContext.RouteData来实现高亮的菜单
我们的当前URL地址上的信息被以路由的形式存储到了“当前HTTP上下方”的RouteData字典里,包括你的controller及action,还有就是查询参数集合等,我们可以通过这个东西来实现当然
菜单的高亮显示功能,看JS和CSS代码:
1 <style type="text/css"> 2 .banner { background: #eee; margin: 5px; padding: 5px; } 3 </style> 4 <script type="text/javascript"> 5 $(function () { 6 $('#grade@(Request.RequestContext.RouteData.Values["grade"])') 7 .css("background", "#000000") 8 .find("a").css("color", "#ffffff"); 9 $('#subject@(Request.RequestContext.RouteData.Values["subject"])') 10 .css("background", "#000000") 11 .find("a").css("color", "#ffffff"); 12 }); 13 </script>
怎么样,这个功能模块很实用吧,呵呵!