0
点赞
收藏
分享

微信扫一扫

基础才是重中之重~你是否真正在用MVC路由功能~再续

兽怪海北 2022-08-25 阅读 65

 在写完第一篇和第二篇MVC路由文章后,我觉得还不够,还应该再具体一点说一下分类筛选与MVC路由,如何快速完成一个分类筛选,分类筛选的高亮如何实现,以及MVC路由参数的顺序对参数值的影响等等。

今天要说的:
一 MVC路由参数的顺序对参数值的影响
二 快速完成一个分类筛选
三 根据RequestContext.RouteData来实现高亮的菜单
 
一 MVC路由参数的顺序对参数值的影响

基础才是重中之重~你是否真正在用MVC路由功能~再续_css

我们看这两个路由的规则,几乎是相同的,但有个地方你是否注意到,在路由规范中grade与subject参数的顺序是不同的,这个参数顺序在程序中启到什么作用呢?经过实验证明,参数靠后的值会在routedata字典中保留,即当你改变subject时,grade的值会被保留,而当你改变grade时,subject将会被进行初始化,这也是正常的。

基础才是重中之重~你是否真正在用MVC路由功能~再续_css_02

而切换科目时,年级信息会被保留

基础才是重中之重~你是否真正在用MVC路由功能~再续_mvc_03

原来就是grade在RouteData字典中的索引排在subject这

基础才是重中之重~你是否真正在用MVC路由功能~再续_html_04

二 快速完成一个分类筛选

代码如下:

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

三 根据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

怎么样,这个功能模块很实用吧,呵呵!

作者:仓储大叔,张占岭,
荣誉:微软MVP

举报

相关推荐

0 条评论