zoukankan      html  css  js  c++  java
  • Asp.Net MVC part3 路由Route

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

    打开Global文件,来看一下路由是如何注册的
    调用MapRoute方法进行注册
    命名参数:在调用方法时,可以通过“参数:值”的格式进行调用,好处:注释,参数位置可以与声明时不一致
    查看MapRoute方法的重载

    参数name
    设置路由规则的名称
    必须是唯一的,重复会报异常
    默认添加”Default”的路由规则

    参数url
    设置url的路由规则,可变的值使用{}括起来
    关键字controller、action名称不可变
    示例:自定义一个新闻频道路由规则
    可以使用?key=value的格式传递参数
    通过路由规则,可以省略?与key部分,直接传递值,在action的参数中自动装配
    优化:如果传递的参数比较多,为action定义多个参数非常乱,则将所有的参数封装到一个类中,将该类定义为action的参数类型

    注意:对于一个网站,为了SEO友好,一个网址的URL层次不要超过三层
    示例:localhost/{频道}/{具体网页},其中域名第一层, 频道第二层, 那么最后的网页就只剩下最后一层了. 如果使用默认实例中的“{controller}/{action}/{id}”的形式会影响网站的SEO,可以使用”/”之外的其它字符进行分隔,如”-”,但这时会进行严格匹配,即必须要有-才可以匹配到,默认值会失效

    参数defaults
    设置路由规则中参数的默认值
    类型为object,可以传递一个匿名对象,属性取决于规则中定义的参数
    参数UrlParameter.Optional表示可选的只读参数
    如果在实际的url中没有指定路由规则中某些参数,则会使用默认值作为参数的值使用


    参数defaults

    设置路由规则中参数的默认值
    类型为object,可以传递一个匿名对象,属性取决于规则中定义的参数
    参数UrlParameter.Optional表示可选的只读参数
    如果在实际的url中没有指定路由规则中某些参数,则会使用默认值作为参数的值使用

    参数constraints
    设置路由规则的约束
    类型为object,可以传递一个匿名对象,属性取决于规则中定义的参数
    参数是正则表达式字符串,如controller=“^[a-z]+$”

    总结
    路由规则可以注册多条
    路由规则的名称不能重复
    路由规则有顺序,并且按照顺序进行匹配;建议子频道的路由规则配置在前面
    路由规则可以设置约束
    路由规则匹配的控制器可以设置命名空间约束

  • 相关阅读:
    vmware centos 共赏目录不显示
    小程序上拉刷新
    chrome json接口数据 插件
    滚动条滚动事件
    smarty循环item命名规范
    css实现梯形样式(含有border)
    设置行高并不能垂直居中
    图片翻转交互效果
    smarty文章字符截取
    css动画 transition
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/6044974.html
Copyright © 2011-2022 走看看