zoukankan      html  css  js  c++  java
  • MVC之路由

    1.路由规则理解:

    在MVC项目中,路由是一个独立的模块,需要引入System.Web.Routing ,路由的作用就是确定控制器和行为,同时确定其他的参数,然后将这些信息传递个相应的控制器和行为。

      public class RouteConfig
        {
            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 }
                );
            }
        }
    

     我们可以使用MapRoute方法定义我们自己的路由规则,这个方法存在着很多的重载,可以根据需求进行添加,自己定义的Route,越详细 的应该放在最前面,因为路由规则一但匹配到之后,就不会继续往下走了

      public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(name: "first", url: "{controller}-{action}-{id}-{price}}"
                    , defaults: new {controller="Hotel",action="Index",id=1,price=3 }
                    );
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
    
                routes.MapRoute(name: "首页", url: "{*values}"
                    , defaults: new {controller="Hotel",action="Index" }
                    
                );
            }
        }
    

    2.MapRoute方法中的参数

    1.name:表示路由规则的名称,这个名称必须是唯一的,否则将会报错,默认情况的名字是Default

    2.url:表示路由的规则,可变的参数用‘{}’括起来,同时对于路由规则中,通过自己定义的路由规则,可以实现参数的传递,代替?key=**,同时可以在Action中实现自动的绑定,但是参数过多的话,将会比较混乱,同时为了SEO的优化,最好不要超过三级

    3.defaults:设置路由规则中的默认值,可以传递一个匿名类型,给相应的变量赋值。

    4.constraints:对规则进行约束,可以用一个匿名类型,给相应的参量进行约束。如:controller=“^[a-z]+$”

     3.路由对象:

    Route(路由规则):存放一条路由的规则,需要指定路由格式、默认值、处理器三个值
    RouteData(路由数据):当前请求上下文匹配路由规则而得到的一个对象,可以在Action中通过RouteData.GetRequestString(“controller/action”)获取本此请求中控制器或行为的真实名称,可以获取相应的路由数据。
    RouteCollection(路由集合):存放路由规则的集合Collection<RouteBase>,一个MVC项目中,可以配置多个路由规则,按照键值对的格式存储到路由集合中
    RouteTable(路由表):类中包含静态的RouteCollection属性,完成所有路由规则的全局存储,在Global中完成注册

    4.总结:

    1.路由规则可以注册多条
    2.路由规则的名称不能重复
    3.路由规则有顺序,并且按照顺序进行匹配;建议子频道的路由规则配置在前面
    4.路由规则可以设置约束

  • 相关阅读:
    [CocosCreator]-06-文字渲染
    [CocosCreator]-05-图片渲染
    [CocosCreator]-04-使用对象池
    [CocosCreator]-03-使用计时器
    [CocosCreator]-02-设备重力传感事件
    [CocosCreator]-01-键盘事件
    [h5棋牌项目]-08-请安装所需的版本的 Windows SDK 或者在项目属性页的问题解决方案
    JS规则 较量较量(比较操作符) 两个操作数通过比较操作符进行比较,得到值为真(true)和假(false)。【>; <; >=; <=; !=;==】
    JS规则 自加一,自减一 ( ++和- -) 【mynum = mynum + 1;//等同于mynum++;】
    JS规则 我还有其它用途( +号操作符)例如,算术操作符(+、-、*、/等),比较操作符(<、>、>=、<=等),逻辑操作符(&&、||、!)
  • 原文地址:https://www.cnblogs.com/XZhao/p/6665679.html
Copyright © 2011-2022 走看看