• Routing


    Routing翻译过来是"路由选择", 负责ASP.NET MVC的第一个工作:识别URL,将一个Url请求"路由"给Controller。

    来了一个Url请求, 从中找到Controller和Action的值, 将请求传递给Controller处理。
    Controller获取Model数据对象,,并且将Model传递给View,最后View负责呈现页面。
    而Routing的作用就是负责分析Url, 从Url中识别参数。

    • Routing的作用

    首页地址是: localhost/home/index
    我们发现访问上面的地址,最后会传递给 HomeController中名为index的action(即HomeController类中的index方法)。
    当然服务器端不会自己去实现这个功能,  关键点就是在Global.asax.cs文件中的下列代码:

        public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                routes.MapRoute
                (
                  "Default",                       // Route name
                  "{controller}/{action}/{id}",              // URL with parameters
                  new { controller = "Home", action = "Index", id = "" } // Parameter defaults
                );
            }
        protected void Application_Start()
            {
                RegisterRoutes(RouteTable.Routes);
            }

    回来看我们的Url: localhost/home/index
    localhost是域名,所以首先要去掉域名部分: home/index
    对应了上面代码中的这种URL结构: {controller}/{action}/{id}
    因为我们建立了这种Url结构的识别规则,所以能够识别出 Controller是home,action是index,id没有则为默认值""。
    这就是Routing的主要作用:
    1.从Url中识别出数据。比如controller,action和各种参数。
    如果跟踪程序,接下来我们会跳转到HomeController中的Index()方法。
    2.根据识别出来的数据,将请求传递给Controller和Action。

    • Routing的使用

    使用Routing为ASP.NET MVC程序添加路由规则。
    使用MapRoute()方法,本质也是通过创建Route类的实例,为RouteCollection集合添加成员。
    这是最简单的为ASP.NET MVC添加识别规则的方法。此方法有如下重载:

    MapRoute( string name, string url);
    MapRoute( string name, string url, object defaults);

    name参数:
    规则名称,可以随意起名。不可以重名,否则会发生错误:
    路由集合中已经存在名为“Default”的路由。路由名必须是唯一的。
    url参数:
    url获取数据的规则,这里不是正则表达式,将要识别的参数括起来即可,比如: {controller}/{action}
    最少只需要传递name和url参数就可以建立一条Routing(路由)规则。比如实例中的规则完全可以改为:

    routes.MapRoute(
        "Default",
        "{controller}/{action}");

    defaults参数:
    url参数的默认值。如果一个url只有controller: localhost/home/
    而且我们只建立了一条url获取数据规则: {controller}/{action}
    那么这时就会为action参数设置defaults参数中规定的默认值。

    defaults参数是Object类型,所以可以传递一个匿名类型来初始化默认值:

    new { controller = "Home", action = "Index" }



  • 相关阅读:
    js动态添加CSS
    LINUX命令行回滚SVN版本
    LINUX文件名批量修改
    LINUX下文件编码转换 iconv
    ubuntu下eclipse的svn插件使用javahl
    HTML5学习笔记 本地数据库
    正则表达式
    我的第一篇博客
    【分布式锁的演化】分布式锁居然还能用MySQL?
    【分布式锁的演化】终章!手撸ZK分布式锁!
  • 原文地址:https://www.cnblogs.com/chrisghb8812/p/6086507.html
Copyright © 2020-2023  润新知