MVC进阶篇(二)—路由机制

时间:2023-03-09 17:55:33
MVC进阶篇(二)—路由机制

前言

这个东西好像,一般也不经常动,都用默认的即可。由于MVC模式在framework里面的解析机制,区别与webform模式,是采用解析路由机制的url。从来实例化视图列对象,然后对该action进行操作,所以路由显得也很重要,也可以理解为这个是一个默认的rul。

按照上文MVC模式,首先发送请求到代码部分,会先解析路由机制,然后找到相应视图控制器下面的相应的action方法,其实就是一个默认引导作用。下面说一下默认路由和自定义路由,以及方法参数分析,其实也没什么。

内容

路由机制我见过的有以下两种:

  • 第一种:用路由匹配请求的url,从而将这些请求映射到控制器中:

默认路由

我见过的路由是在global.asax文件中。默认路由为:

Demo

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);

根据上面的demo,可以看出,这个路由存在于全局文件里面,以静态方法存在。接受的参数为一个路由集对象。方法里面应用了路由对象的两个方法,第一个方法“IgnoreRoute”表明:忽视给出的可用的路由的指定url路由。这里主要是为了适应asp.net,这是一些*axd格式的网址路径不通过MVC运行。去掉它,程序也可以正常运行,我在想它是不是起到了一种初始化或者过滤路由功能。第二个方法“MapRoute”就是映射路由了。系统给出了默认路由url,是不是很人性化。这个MapRoute方法里面有三个参数,分别是路由名称、带有参数的url、参数默认值。在这里就可以配置程序第一次启动要进入的那个url了。其实就这么点儿东西,理解运行机制,路由就是这样用。

关于自定义路由:

在默认路由上面按照默认路由方法,写出自定义跳转的controller、action即可。这里要注意一点儿就是,自定义路由要写到默认路由上面,否则,跳转的时候,还是会跳转到默认路由。当自定义路由出问题的时候,还是会跳转到默认路由的。

//自定义路由
routes.MapRoute("haha", "{controller}/{action}/{id}", new { controller = "Home", action = "Index2", id = UrlParameter.Optional });
  • 第二种:选择一个匹配的路由,构造另一个url:

另外,我们如果在操作过程中,需要用到路由转换机制,那么我们还是可以在cshtml里面利用html.routehtml来自定义路由,方法和自定义路由一样。

@Html.RouteLink("luyoumingcheng", new { controller = "Home", action = "Index2" });

上面这两种方法,路由后面的不管是id还是其他参数,我们还可以通过id(或者其他参数)来更快的找到我们想要的页面。

路由约束

在匹配url或者自定义路由的同时,我们还可以对我们自定义的url或者路由进行条件约束,从而得到我们需要的路由。

Demo

//匹配字母或者数字或者下划线重复多次
routes.MapRoute("haha", "{controller}/{action}/{id}", new { controller = "Home", action = "Modify", id = "1" }, new { controller=@"\w+",action=@"\w+",id=@"\d+"});

小结

总的来说,使用路由构造的url或者请求匹配的url会在一定程度上,让我们的页面转换更加方便。上网查了查说路由机制,可以在一定程度上,避免SQL注入攻击。路由其实真的研究起来,实用的地方真的特别多,微软官方文档上,关于路由对象的方法可谓有多种多样,还需要我们以后多多去应用理解。

感谢您的宝贵时间···