zoukankan      html  css  js  c++  java
  • MVC之路由规则 (自定义,约束,debug)

    自定义路由规则的要求,小范围写在前,大范围写在后。
    路由规则可以注册多条,
    路由规则的名称不能重复
    路由规则有顺序,并且按照顺序进行匹配,建议小范围写在前,大范围写在后。
    路由规则可以设置约束 即正则表达式
    路由规则匹配的控制器可以设置命名空间约束

    routes.MapRoute(
    name: "NewShow",
    url: "{year}-{month}-{day}-{id}",
    defaults: new { controller = "News", action = "Show" },
    constraints:new
    {
    year=@"^d{4}$",
    month = @"^d{1,2}$",
    day = @"^d{1,2}$"
    }
    );

    routes.MapRoute(
    // 1.参数name设置路由规则的名称必须是唯一的,重复会报异常默认添加”Default”的路由规则
    name: "Default",
    //2.参数url设置url的路由规则,可变的值使用{}括起来关键字controller、action名称不可变
    url: "{controller}/{action}/{id}",
    //3.参数defaults设置路由规则中参数的默认值类型为object,可以传递一个匿名对象,属性取决于规则中定义的参数参数UrlParameter.Optional表示可选的只读参数如果在实际的url中没有指定路由规则中某些参数,则会使用默认值作为参数的值使用
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

    路由中的几个对象:
    1.路由规则Route:可以查看源代码了解一下构造方法,需要指定路由格式,默认值,处理器三个值。代码如下:
    routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

    2. 路由数据RouteData:当前请求上下文匹配路由规则而得到的一个对象,可以在Action中通过RouteData.GetRequestString("controller/action")获取本些请求中控制或行为的真实名称

    3.路由集合RouteCollection:存放路由规则的集合Collection<RouteBase>,一个MVC项目中,可以配置多个路由规则,按照键值对的格式存储到路由集合中
    4.路由表RouteTable:类中包含静态的RouteCollection属性,完成所有路由规则的全局存储,在Global中完成注册


    客户的请求过程为:
    当一个客户请求过来时,HttpContext请求到RouteCollection中去RouteTable中的第个键值对的Route比对 如果有一个比对路由规则比对成功,则生成一条RouteData数据进而跳转到对应Cotroller的Action中去进行相应的处理。

    routes.MapRoute(
    // 1.参数name设置路由规则的名称必须是唯一的,重复会报异常默认添加”Default”的路由规则
    name: "Default",
    //2.参数url设置url的路由规则,可变的值使用{}括起来关键字controller、action名称不可变
    url: "{controller}/{action}/{id}",
    //3.参数defaults设置路由规则中参数的默认值类型为object,可以传递一个匿名对象,属性取决于规则中定义的参数参数UrlParameter.Optional表示可选的只读参数如果在实际的url中没有指定路由规则中某些参数,则会使用默认值作为参数的值使用
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );路由的调试,在我们开发的 时候可以使用RouteDeugger进行路由的调试,看我们写的路由有没有启作用,用法 如下把RouteDebug.dll添加引用,在Global.asax.cs中注册路由之后 添加 RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);

  • 相关阅读:
    Place the Robots 需要较强的建图能力
    Channel Allocation 贪心涂色
    A Simple Math Problem 矩阵打水题
    按钮的高亮状态的颜色
    设置UITableViewCell选中颜色但是无效
    常用的忽略警告
    UIButton按钮的高亮状态颜色
    字节的不同单位间的转换
    通过颜色绘制图片UIImage
    头像裁剪功能的实现
  • 原文地址:https://www.cnblogs.com/haofaner/p/5867471.html
Copyright © 2011-2022 走看看