上海金山经纬化工有限公司

上海金山经纬化工有限公司生产二甲基乙酰胺、新洁尔灭、十六十八叔胺、十六烷基三甲基溴化铵、十六烷基三甲基氯化铵、十八烷基三甲基氯化铵、十二烷基二甲基氧化胺、十二烷基二甲基甜菜碱
详细企业介绍
十二叔胺、十二十四叔胺、十四叔胺、十六叔胺、十六十八叔胺、十八十六叔胺、十八叔胺、二甲基乙酰胺、邻苯二甲酸二甲酯、邻苯二甲酸二乙酯、三醋酸甘油酯、新洁尔灭、洁尔灭、工业洁尔灭、1227杀菌剂、杀菌灭藻剂1427、十二烷基。
公告
企业博客-聚合企业员工、客户、合作伙伴等互动交流;推动企业内外信息自由地沟通;展示企业形象,传播企业品牌、文化理念;开展网上营销,推广企业产品和服务。
同福心水论坛

Core 中的MVC路由(一)

  发布于 2019-08-22  

  ASP.NET Core MVC使用路由中间件来匹配传入请求的URL并将它们映射到操作(Action方法)。路由在启动代码(figure方法)或属性(Controller Action属性)中定义。路由描述应如何将URL路径与操作(Action方法)相匹配。它还用于在响应中生成送出的URL。

  路由操作可以设置中间件,支持传统路由、香港马会管家婆一肖,属性理由(通过在Controller Action上放置理由可实现)、多个路由。

  上述代码就是一个传统路由,将这种方式称为传统路由的原因在于,它为URL路径设立了一个约定:

  使用此default路由时,URL路径/Home/Index映射到ex。此映射仅基于控制器和操作(action)名称,而不基于命名空间、万马堂六合彩专家!源文件位置或方法参数。

  通过对UseMvc匿名方法添加多个路由,这样做可以定义多个约定或添加专用于特定操作的传统路由,比如:

  第一个路由里{*article}是表示使用catch-all路由参数来捕获URL路径的剩余部分。下面我们通过测试来验证下:

  通过上述测试可以知道,加星号的路由在传参字符串中加了斜杠依然能够打开,没加星号的路由在传参字符串中加了斜杠就不能打开了。还有一点要注意的是controller.action接收参数必须跟*后面参数名称一致,不然会接收不到参数值。

  当controller存在两个action名称一致的方法,MVC必须要进行区分,不然会引发异常,例如:

  三种属性路由在浏览器上打开链接方式都不一样,但是呈现页面是一样的,也就是说三个属性路由的定义方式都是指向同一个/Home/Index页面。到这里或许大伙会有疑问,如果我把三个属性路由模版名称都改变下,那会能打开同一个页面么?

  上述模版名称更改了,但是在浏览器呈现页面还是指向/Home/Index的,也就是说,无论属性路由模版名称如何更改总能打开对应/Home/Index页面。

  属性路由还可以使用Http[Verb]属性,比如HttpPostAttribute。所有这些属性都可采用路由模板。此示例展示与同一路由模板匹配的两项操作:

  根据业务场景如果我们需要将某个Controller重新命名为以便访问该Controller下面所有action,那么该如何设置呢?下面通过示例来演示下:

  属性路由同时也支持使用与传统路由相同的内联语法,来指定可选参数、默认值和约束。下面请看示例:

  [HttpGet(homes/{id:int})]把传入id参数值约束为只有数字才能打开该属性下视图,如果传入是字符串则无法找到该视图。而更多路由约束模板在这里参阅。

  我们可以通过框架自带的IRouteTemplateProvider接口自定义路由属性(例如类似[HttpGet]、[Route(homes)]等属性)。当应用程序启动时,MVC会查找控制器类和操作方法上的属性,并使用实现IRouteTemplateProvider的属性生成一组初始路由。此部分通过一个简单的示例说明了如何使用应用程序自定义属性路由:

  新建一个路由属性类自定义属性路径,然后在Controller或者Action上放置自定义属性路由。

  感谢大家对零度编程的持续关注,在这个祥和的日子里,祝大家端午安康,阖家幸福!