zoukankan      html  css  js  c++  java
  • ASP.NET Core MVC 中两种路由的简单配置

    1.全局约定路由

    这种方式配置优先级比较低,如果控制器或者方法上标记了特性路由那么优先走特性路由。

    当建立好一个mvc项目里,路由都是默认配置好的。

    如果建立的是空项目那么需要手动配置:

    1.需要在ConfigureServices方法中添加mvc服务

    services.AddMvc();

    2.在Configure添加mvc中间件:

    app.UseMvcWithDefaultRoute();         //添加mvc中间件并使用默认路由配置

    这里添加mvc中间时使用的是默认的路由配置,默认的路由配置就是跟上图的一样。如果url地址栏controller为空那么默认为home,action为空那么默认为index方法,最后一个/id是可空的(带?代表可空的,正则约束)。当然也可以自定义一些路由:

                app.UseMvc(builder =>
                {
                    builder.MapRoute("default", "{controller=Home}/{action=Index}/{Id?}");       //添加mvc中间件并使用自定义路由配置
    
                    builder.MapRoute("areas", "{area:exists}/{controller=Home}/{action=Index}/{Id?}");       //区域路由配置
                });

    这里区域路由配置中的  {area:exists}  这个exists不仅可以路由参数能从Url地址匹配到值还要确保路由参数值在项目中能找到真正的文件夹或文件,这样整个路由才算匹配成 

    2.特性标记路由

    特性标记路由是使用Route特性标记在标记在控制器或者方法上的,Route必须传入一个参数,该参数为字符串

    如图:

    如果Route标记在控制器上,那么需要传入参数则为匹配的控制器名,

    如果Route标记在控制器上,那么需要传入参数则为匹配方法名。

    如果需要配置类似默认路由配置那样方法名为空就默认匹配某个方法时,则不在方法配置或者配置空字符串即可(注意:如果出现多个不配置或者配置空字符串时则无法匹配,出现异常):

    如果想默认使用控制器名称和方法名称作为匹配规则可以这样来配置:

    也可以直接在控制器上这样配置:

        [Route("[Controller]/[Action]")]

    区域配置,前面我们已经添加了区域路由配置。我们只需要添加区域然后添加控制器即可。在控制器上使用Area特性标记区域名称即可:

    第二种方法在mvc中用的不多且通过使用默认的配置足矣,在无法满足需求时可自定义路由规则,一般webapi项目用的较多。

  • 相关阅读:
    自己写的一个读取execl的帮助类
    手动获取spring的ApplicationContext和bean对象
    前端开发不容错过的jQuery图片滑块插件(转)
    细说HTML元素的隐藏和显示
    DIV+CSS布局重新学习之使用A标签和CSS制作按钮
    opencv2函数学习之flip:实现图像翻转
    DWZ中Tree树形菜单的treeCheck如何获取返回值解决方案
    DWZ中刷新dialog的方案解决
    DWZ与KindEditor编辑器的整合
    ViewModel在MVC3中的应用:实现多字段表格的部分更新
  • 原文地址:https://www.cnblogs.com/heheblog/p/11001190.html
Copyright © 2011-2022 走看看