• asp.net MVC 路由


      在winFrom上面我们会用一个重写Url的组件来实现伪静态,来提供好的体验和SEO等。而现在我们希望URL能够满足

        1.容易记忆和拼写

        2.简短,反映出站点结构

        3.用户可以通过移除URL的末尾达到更高层的结构 

    用传统的方式我们很难达到上面的要求,而路由解决了这些问题。和重写URL不同的是,重写只是将请求的URL进行了转发,而路由接管了整个URL的生命周期。 路由主要是用来匹配传入的请求,并将请求映射到控制器操作,构造传出的URL等。

    在MVC中有这样的一段路由代码

     public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                 );
                
            }

    其中

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");表示忽略能够匹配到的路由

    在下面的路由中定义了一个名为Default的路由 制定了默认的

    controller = "Home", action = "Index", id = UrlParameter.Optional

    我们自己来定义一段路由,我希望有一个list/2012/1/1这样的年月日的路由 ,于是我在路由表里面加上一下代码:

     routes.MapRoute(name: "List",
                url: "List/{year}/{month}/{day}",
                defaults: new { Controller="User",action="index", year=2012,month=1,day=1 }
                );


    设置路由到User控制器下的index方法上   ,然后在UserController的index方法如下:

      public ViewResult Index(int year,int month,int day)
            {
                ViewBag.date = year + "-" + month + "-" + day;
                return View();
            }

    将年月日输出到页面上在View /index.cshtml上加上

    <p>@ViewBag.date</p>

    运行得到了希望的答案

      

            

            到这里就大概知道了路由是怎么写的。要探究其中的远离还需要下一番功夫才行,要注意的是定义路由的时候最好指定Controller action 这样可以得到自己想要的路由结果。其实只要结构简单默认的路由也是够用了的。路由需要考虑到路由二义性的问题,一条url能够被两条以上的路由匹配是我们需要规避的。

  • 相关阅读:
    ORACLE各种对象、概念及关系整理(一文读懂)
    Spring面试题总结及答案
    MySQL面试总结
    可变参数,你还为方法的参数而烦恼吗?可变参数,让你的头发从此“茂密”!
    java编译报错: 找不到或无法加载主类 Demo.class 的解决方法
    java编译报错 错误: 编码GBK的不可映射字符
    sql server2017开启远程连接
    sql server一些快捷方式和操作技巧
    sql server无法连接本地服务器
    phpStorm+xdebug调试(php7.3)
  • 原文地址:https://www.cnblogs.com/ac1985482/p/2811321.html
Copyright © 2020-2023  润新知