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

简介:

MVC开发环境为我们提供简单的,友好的,方便的,路由功能,我们可以通过global.asax对它进行URL路由的设置,它会帮助我们自己检索你controller下的action,它会根据你

action的方法签名来进行路由重写的“匹配工作”,而且它的匹配是自上而下的,即第一个满足路由时,即重写URL。

实例:我们希望得到的URL地址是这样的:

怎么去实现?

你可以会说,传个string的变量就可以了,这和原来的WEB FORM没有什么区别呀,如果你是这样实现的,那我要告诉你,你根据就没有用MVC的路由功能,正确的做法是

在global.ascx中设置你的路由规则

1    routes.MapRoute(
2                 "myroute",
3                 "{controller}/{action}/{grade}-{subject}-{version}",
4                 new { controller = "Home", action = "About", grade = 0, subject = 0, version = 0 }
5             );

注意,要把特殊的规则放在最上面,否则它有可能会被其它规则代替。

然后就是你的action的方法签名了,要来你的路由匹配,这当然很正常

1       public ActionResult About(int? grade, int? subject, int? version)
2         {
3             ViewBag.query = string.Format("grade:{0},subject:{1},verson{2}", grade, subject, version);
4             return View();
5         }

最后,我们在URL上输入测试地址,结果如下:

如果,你希望为这个页面添加链接,请使用MVC的HtmlHelper的扩展方法,不要用<a>标签了,如果非要用<a>,那你的href需要使用Url.Action来设置地址,这样才能被MVC路由匹配上。

1 @Html.ActionLink("一年级语文人教版", "About", new { grade = 1, subject = 1, version = 1 })
2 @Html.ActionLink("二年级数学人教版", "About", new { grade = 2, subject = 2, version = 1 })

当然,如果你的参数只能出现数字,你也可以对它进行约束,像这样:

1          routes.MapRoute(
2                 "Default", // 路由名称
3                 "{controller}/{action}/{id}", // 带有参数的 URL
4                 new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // 参数默认值
5                 new { grade = @"^\d+$", subject = @"^\d+$", version = @"^\d+$" }
6             );

如果用户输入非数字的参数,即当它不匹配规则时,它将无法把被重写的参数带到action中,这是正常的,除非你用?grade=a这种格式,当然用这个就与URL重写没有关系了,因为它是通过

HTTP请求获得的数据,我们今天主要说的是URL重写,即URL的规范性。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:基础才是重中之重~你是否真正在用MVC路由功能,如需转载请自行联系原博主。

目录
相关文章
|
XML 开发框架 前端开发
J2EE自定义mvc【框架配置及功能】
1、在增删改的方法里面我们这两行代码是一样的、重复的。类里面增加了一个通用的增删改的方法,我们在。我们新建一个web包,在里面新建一个。进行一个搜索,新增、修改、删除。进行一个通用的增删改的方法。BookDaoTest测试。测试我们的数据库能否连接。增加,修改的jsp界面。我们删除ID:16、22。导入之后我们选中所有的。2、代码逻辑是重复的。书籍名:圣墟1234。
|
4月前
|
供应链 前端开发 Java
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
该博客文章介绍了一个使用Mybatis、Layui、MVC和JSP技术栈开发的服装库存管理系统,包括注册登录、权限管理、用户和货号管理、库存管理等功能,并提供了源码下载链接。
服装库存管理系统 Mybatis+Layui+MVC+JSP【完整功能介绍+实现详情+源码】
|
6月前
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
|
6月前
|
前端开发 Java Maven
如何在Spring MVC中实现图片的上传和下载功能
如何在Spring MVC中实现图片的上传和下载功能
|
7月前
|
移动开发 Java 测试技术
Spring MVC+Spring+Mybatis实现支付宝支付功能(附完整代码)
Spring MVC+Spring+Mybatis实现支付宝支付功能(附完整代码)
187 1
|
前端开发
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染4
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染4
56 0
|
前端开发
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染2
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染2
59 0
|
7月前
|
JSON 前端开发 Java
Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!
Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!
|
前端开发 Java 数据库连接
“构建高级自定义MVC框架实现CRUD功能的完整指南“
“构建高级自定义MVC框架实现CRUD功能的完整指南“
56 0
|
前端开发
前端学习笔记202305学习笔记第三十一天-什么是mvc-vc和路由的绑定2
前端学习笔记202305学习笔记第三十一天-什么是mvc-vc和路由的绑定2
54 1
下一篇
DataWorks