zoukankan      html  css  js  c++  java
  • 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了。其实就这么点儿东西,理解运行机制,路由就是这样用。

     

    关于自定义路由:

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

     

    //自定义路由
    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注入攻击。路由其实真的研究起来,实用的地方真的特别多,微软官方文档上,关于路由对象的方法可谓有多种多样,还需要我们以后多多去应用理解。

     

     

    感谢您的宝贵时间···

  • 相关阅读:
    设计模式学习之路——Strategy 策略模式
    C# 异步编程 结束异步调用
    设计模式学习之路——Chain Of Responsibility 职责链模式
    delphi笔记之XML操作
    AS3判断XML属性是否存在
    Loader ,URLLoader ,URLStream的使用区别(转)
    delphi笔记之nativeXml
    Delphi的颜色转换
    Delphi利用Bass.dll播放音频
    【转】球坐标旋转
  • 原文地址:https://www.cnblogs.com/zhoulitong/p/6412319.html
Copyright © 2011-2022 走看看