纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

asp。netcore系列属性路由的设置

8月24日 先锋客投稿
  0。前言
  在之前我们介绍了请求通过路由寻找到控制器,以及控制器与视图的数据流转。那么,我们回过头来,再看看路由的一些其他用法。
  1。路由属性(RouteAttribute)
  按照英文的直接翻译,RoutingAttribute的意思是路由属性,但实际上Attribute在微软的官方称呼是特性。嗯,所以个人觉得RouteAttribute应该是特性路由,路由特性。
  嗯,暂且甩开称呼的问题,小伙伴们知道这是一种使用Attribute标记的路由配置方案就行。我们之前了解的路由设置都是通过路由表设置的,而RouteAttribute则是另外一种方案。
  1。1如何设置
  这种方案主要是通过RouteAttribute类来设置的,我们先来看一下这个类是个什么样的吧:
  〔AttributeUsage(AttributeTargets。ClassAttributeTargets。Method,AllowMultipletrue,Inheritedtrue)〕
  publicclassRouteAttribute:Attribute,IRouteTemplateProvider
  {
  publicRouteAttribute(stringtemplate);
  publicstringName{}
  publicintOrder{}
  publicstringTemplate{}
  }
  AttributeUsage这个特性是用来标注特性的适用范围的,其中AttributeTargets。ClassAttributeTargets。Method表示这个特性是可以设置在类或者方法上的。AllMultiple表示是否允许设置多个,Inherited表示被该特性标注的类其子类是否也自动继承了这个特性。
  那么,我们了解了RouteAttribute的适用范围,继续看这个类,一共有三个属性:
  Name表示这个路由特性的名称
  Order表示启用顺序,值越小,越先被匹配。默认情况下是0
  Template路由解析模板,也就是在《【core系列】2控制器与路由的恩怨情仇》中介绍的路由表的格式串
  介绍了这么多,我们先来试试看,先拿出来之前文章创建的MvcWeb项目,新建一个控制器:
  usingMicrosoft。AspNetCore。M
  namespaceMvcWeb。Controllers
  {
  publicclassRouteTestController:Controller
  {
  publicIActionResultIndex()
  {
  returnView();
  }
  }
  }
  创建对应视图:
  VRouteTIndex。cshtml
  在Index。cshtml中随便写点内容,然后保存。
  然后,在RouteTestController添加一个Route特性标记:
  〔Route(R)〕
  publicIActionResultIndex()
  {
  returnView();
  }
  启动项目,访问http:localhost:5006Route后,如果不出意外可以看到跟下图类似的界面:
  那么我们试一试通过路由表设置的路径是否可以访问:
  http:localhost:5006RouteTest
  可以看到提示404,也就是说这个Action无法通过路由表的形式查找到了。
  1。2设置参数
  我们知道所谓的Action其实也是一个方法,而我们通常请求一个网址的时候,网址中也带有一些查询参数。所以,这一节我们就介绍一下路由特性(属性路由)如何设置参数的解析吧。
  1。2。1不做任何操作
  在RouteTestController里添加方法:
  〔Route()〕
  publicIActionResultNoRest(stringname)
  {
  ViewBag。N
  returnView();
  }
  创建对应的View:
  ViewBag。Name
  启动程序,并访问:http:localhost:5006routenorest
  添加?nametest在上一个请求的后面:
  尝试变更name的值,可以发现网页中的值也发生了变化,证明我们可以获取到这个值。
  1。2。2当做请求目录的一部分
  在上一小节中,没有对参数做任何操作,以查询参数的形式传递。在这一篇,我们可以把参数设置为请求的一部分,像目录那样,修改上一节示例代码为:
  〔Route(routenorest{name})〕
  publicIActionResultNoRest(stringname)
  {
  ViewBag。N
  returnView();
  }
  请求方式:
  http:localhost:5006routenorest1232
  修改连接中的1232内容,然后刷新页面,就能发现页面中的值也发生了变化
  1。2。3给参数一个默认值
  之前的设置里我们都默认参数由请求URL获取,那么在这里我们介绍一下给参数一个值:
  〔Route(routenorest{namedemo})〕
  publicIActionResultNoRest(stringname)
  {
  ViewBag。N
  returnView();
  }
  访问连接:
  http:localhost:5006routenorest
  可以看见:
  设置为可空,也就是参数可以不传:
  〔Route(routenorest{name?})〕
  publicIActionResultNoRest(stringname)
  {
  ViewBag。N
  returnView();
  }
  访问连接:
  http:localhost:5006routenorest
  可以看到页面没有任何显示:
  正常情况下,如果不对参数设置可空而且参数被我们当做目录的一部分时,不给值是会提示404。
  1。3路由约束
  2。路由统一前缀
  在第一节中,我们介绍了如何使用RouteAttribute为控制器里的方法标记路由信息。有时候会出现这样的一个问题,一个控制器方法里可能会出现多个方法(Action)。通常情况下,我们要求一个控制器处理的请求应当有一个统一的前缀(或者称之为URL目录)。
  那么,这种情况我们仍然继续使用RouteAttribute,不过与之前不同的是,这次直接在控制器类上标记:
  〔Route(R)〕
  publicclassRouteCtrTestController:Controller
  {
  }
  这时候,在方法上如果添加了RouteAttribute,设置的路由信息如果不是以开始,则会将该Action的路由配置加到Controller后面。如果是以开始,则表示该路由是根路由。
  如果没有设置RouteAttribute,则表示当前方法是处理控制器配置的路由的方法。
  如果一个控制器里出现多个未设置RouteAttribute,则会出错。
  示例代码如下:
  〔Route(R)〕
  publicclassRouteCtrTestController:Controller
  {
  publicinttemp{}
  publicIActionResultIndex(inttemp)
  {
  returnContent(你好{temp});
  }
  〔Route(D)〕
  publicIActionResultDemo()
  {
  returnContent(你好D);
  }
  }
  2。总结
  今天的内容比较短,这里介绍了一些路由的另一种用法,小伙伴们对此有个了解就可以了。下一篇将会到视图,开始准备带领大家做一个小项目啦。
  求关注,求点赞,求转发有啥可以评论哟
投诉 评论 转载

老外对你说CC是啥意思?外企必须会的10个邮请点击右上角蓝色“关注”,关注必克英语头条号,及时接收精彩内容。Melody刚进入一个外企上班。一天,同事跟她说发邮件记得“CC”给老板。她很疑惑,“CC是什么?”……日本海沟莫名移动50米,专家称或现300年一遇大震由于地处环太平洋火山地震带,所以日本一直是一个多火山地震的国家。近两个月以来,日本列岛及其附近接连发生一些小规模地震,如在4月26日,日本茨城县南部发生4级地震,5月6日,千叶……都2020年了是哪些人在买闪存卡?国行版switch的发布进一步降低了掌机的入门门槛,小编就入手了一台。经过一段时间体验,发现这确实是一款不可或缺的好产品,与其他游戏主机相比,无论是从便携性方面还是从游戏资源方……asp。netcore系列属性路由的设置0。前言在之前我们介绍了请求通过路由寻找到控制器,以及控制器与视图的数据流转。那么,我们回过头来,再看看路由的一些其他用法。1。路由属性(RouteAttribut……玫琳凯产品夸大宣传,远不如“洗脑术”高超点击上方蓝色字关注我们!要说直销品牌里做的最成功的非玫琳凯莫属,它有多成功呢,一度火爆到从城市到乡村玫琳凯的牌子随处可见。但是慢慢的很多门店都开不下去了,为什么呢,是产品……什么是软件著作权?什么是软件著作权评估?评什么是软件著作权?什么是软件著作权评估?评估目的用途是什么?一、什么是软件著作权?软件著作权全称为计算机软件著作权,是指软件的开发者或者其他权利人依据有关著作权法律……深扒油皮挚爱爽肤水,这个夏天到底值不值入手嗨喽宝儿们!今天的小咔格外的happy无非就是618买的一些水乳精华全到了这会一年的东西又不愁了!不过话说回来,2020年都已经不知不觉的过了大半年了……学用手机用手机买火车票上一期讲了在手机上网购,在有了支付工具后,网上购物变得简单,在手机上买火车票也是网购的一种,它极大地方便了出行的人,不用再专门去火车站或者代售点购买车票,也一定范围杜绝了黄牛倒……三大运营商业绩出炉,2020年将为5G投资1803亿元3月24日,随着中国电信午间在港交所公布了去年的财报,至今,三大运营商2019年的“成绩”已悉数出炉。三大运营商今年将为5G投资1803亿元电信运营商的资本开支是整……卓依婷消失背后:被死亡谣言困扰20多年,如【文柠檬渣】对于八零后、九零后来说,总会有一些童年的记忆,比如过年时候的鞭炮声、压岁钱,还有卓依婷的歌声。每到过年的时候,卓依婷那些脍炙人口的歌曲总会传遍每一个大街……胸小偏瘦穿什么婚纱好看?领形的选择很重要!对于快要结婚的准新娘来说,一定是一件很幸福的事情,但是选婚纱真的是一件幸福又痛苦的事情。胖了不好选婚纱,那太瘦了也不好选啊那么胸小偏瘦的女生要穿什么样的婚纱才好看呢?首先……红色裤装配什么上衣?好久不见的我答疑,这次挑了时间跨度长一点的几个来说一说。01H型苹果型身材怎么穿?H型肩腰胯几乎同宽,木有明显的曲线;苹果型腰腹有赘肉,侧看肚子凸出;那么H苹果?我……
提升转化率的重要因素,有注意过吗?如何通过直通车打爆款?做好内容营销,卖货只是顺手的事一周让店铺流量暴增的操作思路巧妙利用钻展,备战双十一直通车推新词的小技巧淘宝店铺搜索排序原理合理定价,既卖的动货还有充足的利润空间从内容到流量,爆发中的短视频有哪些新玩法?如何提升店铺宝贝的综合排名?淘宝宝贝为什么在总价排序下搜不到?宝贝详情页这样设计,转化翻两倍生理期前会有什么反应生理期前到底会有哪些迹象和症状?新鲜到货你一心虚我就爆笑了哟双足底筋膜炎怎么治疗四种生活细节提升男人性能力一女孩买裤子的场景(看她是如何杀价的)那一刻我感受到幸福天蝎座男生配处女星座女人相配吗(天蝎座与射手座相配吗)60秒知道,防止“盆景”叶片泛黄的简单方法动物求职记小学生作文明朝万历皇帝的“大伴”太监冯保的人生轨迹周公解梦梦见考试,梦见考试成绩高考作文档次提升方法之托物象征,借象传意

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形